赞
踩
- @SuppressWarnings("serial")
- @Configuration
- @ConfigurationProperties(prefix="spark")
- public class SparkConfig implements Serializable {
-
- //spark的安装地址
- private String sparkHome = ".";
- //应用的名称
- private String appName = "mySpark";
- //master的地址
- private String master = "local[*]";
-
- @Bean
- @ConditionalOnMissingBean(SparkConf.class)
- public SparkConf sparkConf() throws Exception {
- SparkConf conf = new SparkConf()
- .setSparkHome(sparkHome)
- .setAppName(appName)
- .setMaster(master);
- conf.set("spark.serializer", "org.apache.spark.serializer.KryoSerializer");
- //JVM申请的memory不够会导致无法启动
- conf.set("spark.testing.memory","471859200");
- return conf;
- }
-
- @Bean
- @ConditionalOnMissingBean(JavaSparkContext.class)
- public JavaSparkContext javaSparkContext() throws Exception {
- return new JavaSparkContext(sparkConf());
- }
-
- public String getSparkHome() {
- return sparkHome;
- }
-
- public void setSparkHome(String sparkHome) {
- this.sparkHome = sparkHome;
- }
-
- public String getAppName() {
- return appName;
- }
-
- public void setAppName(String appName) {
- this.appName = appName;
- }
-
- public String getMaster() {
- return master;
- }
-
- public void setMaster(String master) {
- this.master = master;
- }
- }
这段代码是一个用于配置Apache Spark的Java配置类,它利用了Spring Boot的自动配置和条件注解功能来创建和管理Spark的配置和上下文。下面是对这段代码的详细解释:
@SuppressWarnings("serial")
:
serialVersionUID
的警告。在Java中,当你实现Serializable
接口时,最好定义一个serialVersionUID
,以便在序列化对象时保持版本兼容性。然而,对于只用于Spring Boot内部管理的配置类,这个警告通常可以忽略。@Configuration
:
@Bean
注解的方法,然后将这些方法返回的实例注册为Bean。@ConfigurationProperties(prefix="spark")
:
spark
为前缀的配置项,并将它们自动填充到SparkConfig
类的相应字段中。这样,你可以通过在application.properties
或application.yml
文件中设置spark.sparkHome
、spark.appName
和spark.master
等属性来配置Spark。sparkHome
(Spark的安装地址)、appName
(应用的名称)、master
(master的地址)。这些字段通过标准的getter和setter方法提供访问。@Bean
和@ConditionalOnMissingBean
:
@Bean
注解的方法:sparkConf()
和javaSparkContext()
。这两个方法分别用于创建SparkConf
和JavaSparkContext
的Bean。SparkConf
是Spark的配置类,而JavaSparkContext
是Spark操作的主要入口点。@ConditionalOnMissingBean
注解用于条件化Bean的创建。如果容器中已经存在SparkConf
或JavaSparkContext
的Bean,则不会创建新的Bean。这有助于避免在多个配置类中重复创建相同的Bean。sparkConf()
方法中,通过SparkConf
对象设置了Spark的一些基本配置,包括Spark的安装路径、应用名称、master地址,以及序列化器和JVM内存大小等。javaSparkContext()
方法通过调用new JavaSparkContext(sparkConf())
来创建JavaSparkContext
的Bean。这个上下文是执行Spark作业所必需的。总之,这个类通过Spring Boot的自动配置和条件注解功能,提供了一种灵活的方式来配置和管理Spark应用的配置和上下文。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。