# spark-spring-boot **Repository Path**: leojie/spark-spring-boot ## Basic Information - **Project Name**: spark-spring-boot - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 10 - **Forks**: 7 - **Created**: 2019-08-05 - **Last Updated**: 2023-01-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README
在Java的世界里,最不缺乏的就是想象力!当Spark遇上Spring Boot,又会发生怎样的故事呢!😋
基于 Java8 + Scala + Spark+Spring Boot 充分利用起SpringBoot注解开发的便利,IOC等等Bean对象管理的优势,构建定制化Spark任务管理服务。😋
起一个常驻集群的Spark+SpringBoot 服务,以API的方式,手动或定时触发我们的Spark任务,避免繁琐冗长的Submit命令,避免一次又一次的资源申请,实时监控任务运行,及时得到运行反馈。使非开发人员,点点拽拽,也可以运行我们的日常业务,操作我们的大数据平台。😋
github https://github.com/CCweixiao/spark-spring
*** - [**`功能特性`**](#功能特性) - [**`我的环境`**](#我的环境) - [**`开发环境`**](#开发环境) - [**`测试集群环境`**](#测试集群环境) - [**`测试集群配置`**](#测试集群配置) - [**`项目结构`**](#项目结构) - [**`技术栈`**](#技术栈) - [**`开始使用`**](#开始使用) - [**`运行测试`**](#运行测试) - [**`总结`**](#总结) # 功能特性 * [x] Spark与SpringBoot集成,解决了冲突依赖 * [x] Spring Bean对象池集中管理SparkSession对象 * [x] 依赖注入Scala类 * [x] java与Scala代码互相调用 * [x] maven混合java Scala编译打包 * [x] spark-submit提交,常驻集群,API方式,运行spark任务 # 我的环境 ## 开发环境 - MacOs 10.14.5 - jdk 1.8 - scala 2.11.8 - spark 2.4.3 - idea 2019.1.2 ## 测试集群环境 - centos7 - jdk1.8 - scala 2.11.8 - hadoop 2.7.4 - spark 2.4.3 - hive 3.1.1 ## 测试集群配置   # 项目结构  # 技术栈 - jdk 1.8 - maven 3.6.1 - SpringBoot 1.5.6 - spark 2.4.3 - hive 3.4.1 - ... # 开始使用 1. 使用IDE导入本项目,更新pom,导入依赖 2. 替换集群配置文件为自己的 3. mvn clean package 打包  ```java //集群运行时注意修改 @Bean @ConditionalOnMissingBean(SparkSession.class) public SparkSession sparkSession() throws Exception { return SparkSession.builder() .appName("FastKettle") //.master("local[4]") .enableHiveSupport() .getOrCreate(); } ``` 4. 提交集群运行 spark-submit --class com.dr.leo.demo.SparkSpringApplication --executor-memory 4G --num-executors 4 --master yarn --deploy-mode client spark-spring-0.0.1-SNAPSHOT.jar
# 运行测试
服务启动后如图


postman 测试
WordCount

操作hive中的表

java scala互相调用

依赖注入

# 总结
以上操作便完成了SpringBoot与Spark的整合,如有不妥之处,还望指正。
Spark与Spring Boot的整合,结合两者的优点,具体可以发挥怎样的效果,还需要结合公司业务或自己的需求,自由想象。
整合过程中遇到的最大问题,其实是SpringBoot与集群之间的包冲突。经过反复测试,比较兼容的一个SpringBoot版本是1.5.6。2.0以上版本的未经严格测试,依赖包冲突的貌似比较多,或需要排更多的依赖包。