Spring Boot 2.0集成Spark 2.2.1连接远程独立集群报错求助
Spring Boot 2.0 整合 Spark 2.2.1 连接远程独立集群
看起来你已经在搭建Spring Boot和Spark的整合环境了,我帮你完善下代码并梳理几个关键配置的注意事项:
完整的Spark配置Bean代码
首先补全你没写完的JavaSparkContext Bean,完整配置类如下:
import org.apache.spark.SparkConf; import org.apache.spark.api.java.JavaSparkContext; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.env.Environment; @Configuration public class SparkConfig { @Autowired private Environment env; @Bean public SparkConf sparkConf() { return new SparkConf() .setAppName("testSpark") .setMaster("spark://<spark-ip>:7077") .setJars(new String[]{"/path/to/my/app.jar"}) .set("spark.cassandra.connection.host", env.getProperty(AppConfig.CONTACTPOINTS)); } @Bean public JavaSparkContext javaSparkContext() { return new JavaSparkContext(sparkConf()); } }
关键配置解析
setMaster("spark://<spark-ip>:7077"):务必把<spark-ip>替换成你Spark集群Master节点的真实IP或主机名,同时要确保Spring Boot应用所在机器能访问7077端口(集群防火墙要开放这个端口)。setJars(new String[]{"/path/to/my/app.jar"}):这个配置指定了要分发到Spark Worker节点的应用JAR包,有两个核心注意点:- 路径必须是绝对路径,如果是开发环境,可以用Maven/Gradle构建输出的JAR路径(比如
target/your-spring-boot-app.jar); - 如果你的应用依赖了Spark Cassandra Connector这类第三方包,要么把依赖打包进Spring Boot的JAR里(用
spring-boot-maven-plugin的executable模式),要么确保Spark集群的所有Worker节点的classpath里已经包含这些依赖,否则会出现ClassNotFoundException。
- 路径必须是绝对路径,如果是开发环境,可以用Maven/Gradle构建输出的JAR路径(比如
spark.cassandra.connection.host:用Environment读取外部配置是非常好的实践,这样你可以在application.properties里配置不同环境的Cassandra节点地址,无需修改代码。
额外注意事项
- 打包方式:Spark要求提交的JAR是可执行的,所以Spring Boot必须用
jar打包方式(不要用war),并且确保打包时包含了所有必要的依赖。如果遇到日志框架冲突(比如Spark用Log4j,Spring Boot默认用Logback),可以在pom.xml或build.gradle里排除冲突的依赖。 - JAR包的可访问性:如果Spring Boot应用和Spark集群不在同一台机器,不要用本地文件路径指定JAR,最好把JAR上传到HDFS或者共享存储,然后用
hdfs://或file://的路径(比如setJars(new String[]{"hdfs://hdfs-node:9000/apps/your-app.jar"})),这样所有Worker节点都能获取到JAR包。 - 版本兼容性:Spark 2.2.1和Spring Boot 2.0都要求Java 8,确保你的项目JDK版本是Java 8,避免版本不兼容问题。
内容的提问来源于stack exchange,提问作者Pavel Krutikhin
相关产品推荐
相关产品推荐

