Spring Boot Vue 毕设系统讲解 9 【Spark】

@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的配置和上下文。下面是对这段代码的详细解释:

  1. @SuppressWarnings("serial"):
    • 这个注解用于抑制编译器关于缺少serialVersionUID的警告。在Java中,当你实现Serializable接口时,最好定义一个serialVersionUID,以便在序列化对象时保持版本兼容性。然而,对于只用于Spring Boot内部管理的配置类,这个警告通常可以忽略。
  2. @Configuration:
    • 这是一个Spring Boot的注解,表明该类是一个配置类,用于定义Bean。Spring容器会扫描这个类,并识别出用@Bean注解的方法,然后将这些方法返回的实例注册为Bean。
  3. @ConfigurationProperties(prefix="spark"):
    • 这个注解用于将配置文件的属性绑定到类的字段上。在这个例子中,它告诉Spring Boot查找所有以spark为前缀的配置项,并将它们自动填充到SparkConfig类的相应字段中。这样,你可以通过在application.propertiesapplication.yml文件中设置spark.sparkHomespark.appNamespark.master等属性来配置Spark。
  4. 字段定义:
    • 类中定义了三个字段:sparkHome(Spark的安装地址)、appName(应用的名称)、master(master的地址)。这些字段通过标准的getter和setter方法提供访问。
  5. @Bean@ConditionalOnMissingBean:
    • 类中定义了两个带有@Bean注解的方法:sparkConf()javaSparkContext()。这两个方法分别用于创建SparkConfJavaSparkContext的Bean。SparkConf是Spark的配置类,而JavaSparkContext是Spark操作的主要入口点。
    • @ConditionalOnMissingBean注解用于条件化Bean的创建。如果容器中已经存在SparkConfJavaSparkContext的Bean,则不会创建新的Bean。这有助于避免在多个配置类中重复创建相同的Bean。
  6. 配置SparkConf:
    • sparkConf()方法中,通过SparkConf对象设置了Spark的一些基本配置,包括Spark的安装路径、应用名称、master地址,以及序列化器和JVM内存大小等。
  7. 创建JavaSparkContext:
    • javaSparkContext()方法通过调用new JavaSparkContext(sparkConf())来创建JavaSparkContext的Bean。这个上下文是执行Spark作业所必需的。

总之,这个类通过Spring Boot的自动配置和条件注解功能,提供了一种灵活的方式来配置和管理Spark应用的配置和上下文。

相关推荐

  1. Spring Boot Vue 系统讲解 9Spark

    2024-07-13 07:18:06       20 阅读
  2. Spring Boot Vue 系统讲解 7

    2024-07-13 07:18:06       25 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-13 07:18:06       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-13 07:18:06       71 阅读
  3. 在Django里面运行非项目文件

    2024-07-13 07:18:06       58 阅读
  4. Python语言-面向对象

    2024-07-13 07:18:06       69 阅读

热门阅读

  1. GetX 踩坑之移除路由栈中的某个页面

    2024-07-13 07:18:06       25 阅读
  2. (C++01 栈与队列) 栈与队列的实现,栈的应用

    2024-07-13 07:18:06       17 阅读
  3. openresty+lua遍历 redis set

    2024-07-13 07:18:06       30 阅读
  4. Xcode持续集成之道:自动化构建与部署的精粹

    2024-07-13 07:18:06       27 阅读
  5. 把Docker的虚拟磁盘文件移动到别的盘符

    2024-07-13 07:18:06       24 阅读
  6. Linux C++ 060-设计模式之中介者模式

    2024-07-13 07:18:06       25 阅读
  7. MyBatis-Plus 关联查询

    2024-07-13 07:18:06       29 阅读
  8. 离线安装docker-compse

    2024-07-13 07:18:06       25 阅读
  9. license系统模型设计使用django models

    2024-07-13 07:18:06       28 阅读
  10. vue3 学习笔记06 -- pinia的简单使用

    2024-07-13 07:18:06       28 阅读
  11. C# Winform 自定义事件实战

    2024-07-13 07:18:06       22 阅读