当前位置:   article > 正文

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

Spring Boot Vue 毕设系统讲解 9 【Spark】
  1. @SuppressWarnings("serial")
  2. @Configuration
  3. @ConfigurationProperties(prefix="spark")
  4. public class SparkConfig implements Serializable {
  5. //spark的安装地址
  6. private String sparkHome = ".";
  7. //应用的名称
  8. private String appName = "mySpark";
  9. //master的地址
  10. private String master = "local[*]";
  11. @Bean
  12. @ConditionalOnMissingBean(SparkConf.class)
  13. public SparkConf sparkConf() throws Exception {
  14. SparkConf conf = new SparkConf()
  15. .setSparkHome(sparkHome)
  16. .setAppName(appName)
  17. .setMaster(master);
  18. conf.set("spark.serializer", "org.apache.spark.serializer.KryoSerializer");
  19. //JVM申请的memory不够会导致无法启动
  20. conf.set("spark.testing.memory","471859200");
  21. return conf;
  22. }
  23. @Bean
  24. @ConditionalOnMissingBean(JavaSparkContext.class)
  25. public JavaSparkContext javaSparkContext() throws Exception {
  26. return new JavaSparkContext(sparkConf());
  27. }
  28. public String getSparkHome() {
  29. return sparkHome;
  30. }
  31. public void setSparkHome(String sparkHome) {
  32. this.sparkHome = sparkHome;
  33. }
  34. public String getAppName() {
  35. return appName;
  36. }
  37. public void setAppName(String appName) {
  38. this.appName = appName;
  39. }
  40. public String getMaster() {
  41. return master;
  42. }
  43. public void setMaster(String master) {
  44. this.master = master;
  45. }
  46. }

这段代码是一个用于配置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应用的配置和上下文。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/832622
推荐阅读
相关标签
  

闽ICP备14008679号