zoukankan      html  css  js  c++  java
  • Springboot(2.0.0.RELEASE)+spark(2.1.0)框架整合到jar包成功发布(原创)!!!

    一、前言

      首先说明一下,这个框架的整合可能对大神来说十分容易,但是对我来说十分不易,踩了不少坑。虽然整合的时间不长,但是值得来纪念下!!!我个人开发工具比较喜欢IDEA,创建的springboot的java工程再引入scala的library之后当前工程即可创建java文件又可创建scala文件,这个一个工程里可采用java+scala双语言来开发。用了这个框架搭建成功后给我们开发spark代码能带来什么便利之处?

      1、springboot可以开发非web项目,与spark不相关的代码可以采用java来开发,比如访问数据库,中间件等,用java十分便利。

      2、spark相关开发采用scala语言代码量更少,开发效率更高。

      主要基于以上两点,搭建这个框架还是具有不小的意义。

    二、搭建过程

      1、利用maven引入springboot的基础jar包

      2、利用maven引入spark相关jar包

      3、利用maven引入解决冲突的jar包

    完整pom文件如下:
    <?xml version="1.0" encoding="UTF-8"?>

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.0.0.RELEASE</version>
    </parent>

    <groupId>ba</groupId>
    <artifactId>SparkTest01</artifactId>
    <version>1.0-SNAPSHOT</version>

    <name>SparkTest01</name>
    <!-- FIXME change it to the project's website -->
    <url>http://www.example.com</url>
    <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.7</maven.compiler.source>
    <maven.compiler.target>1.7</maven.compiler.target>
    <spark.version>2.1.0</spark.version>
    <hadoop.version>2.7.4</hadoop.version>
    <springboot.version>2.0.0.RELEASE</springboot.version>
    </properties>
    <dependencies>
    <!--spark框架开始-->
    <dependency>
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-core_2.11</artifactId>
    <version>${spark.version}</version>
    <exclusions>
    <exclusion>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-log4j12</artifactId>
    </exclusion>
    </exclusions>
    </dependency>
    <dependency>
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-sql_2.11</artifactId>
    <version>${spark.version}</version>
    </dependency>
    <dependency>
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-hive_2.11</artifactId>
    <version>${spark.version}</version>
    </dependency>
    <dependency>
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-streaming_2.11</artifactId>
    <version>${spark.version}</version>
    </dependency>
    <dependency>
    <groupId>org.apache.hadoop</groupId>
    <artifactId>hadoop-client</artifactId>
    <version>${hadoop.version}</version>
    <exclusions>
    <exclusion>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-log4j12</artifactId>
    </exclusion>
    </exclusions>
    </dependency>
    <!--spark框架结束-->

    <!--springboot开始 -->
    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter</artifactId>
    <version>${springboot.version}</version>
    </dependency>
    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-configuration-processor</artifactId>
    <version>${springboot.version}</version>
    <optional>true</optional>
    </dependency>
    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-autoconfigure</artifactId>
    <version>${springboot.version}</version>
    </dependency>
    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-test</artifactId>
    <version>${springboot.version}</version>
    </dependency>
    <!-- springboot框架结束-->

    <dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.6</version>
    </dependency>
    <!--解决框架加载失败 -->
    <dependency>
    <groupId>javax.validation</groupId>
    <artifactId>validation-api</artifactId>
    <version>1.1.0.Final</version>
    </dependency>
    <!--解决框架加载失败 -->
    <dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-validator</artifactId>
    <version>5.2.4.Final</version>
    </dependency>

    </dependencies>

    <build>
    <plugins>
    <!-- springboot maven打包-->
    <plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    </plugin>
    </plugins>
    </build>

    </project>

    注意:1、黄色标记是作用是jar包冲突。
       2、青色标记是解决框架引入失败的问题。
        
    三、实测结果
      

    
    

    
    

    四、打jar包发布至spark平台
     坑:将spark安装包里的gson-2.2.4.jar从jars目录移除!!!
     打包打用的spring-boot-maven-plugin插件,将jar放至spark服务器上,提交代码时指定类为springboot的启动代理类--class org.springframework.boot.loader.JarLauncher。以下是提交命令:
     spark-submit --class org.springframework.boot.loader.JarLauncher SparkStudy01-1.0-SNAPSHOT.jar

    以下是运行的结果:






  • 相关阅读:
    C#如何从普通C++动态库导入一个类?
    MFC的子类化技术
    [转贴] 不要以为使用了模式就是好设计
    VC编程经验汇总(三)
    钩子技术介绍及函数使用
    关于VC中的时间函数讨论
    my read_girl
    Linux + SVN / CVS / ClearCase
    OS + Linux Edit emacs /vi vim gvim /SciTE /gedit /kedit /UltraEdit /nedit /sedf
    java Regular Expression / regexp / zhengzebiaodashi
  • 原文地址:https://www.cnblogs.com/runnerjack/p/9446660.html
Copyright © 2011-2022 走看看