zoukankan      html  css  js  c++  java
  • SparkConf

    Spark的配置类,通过ConcurrentHashMap来存储配置,泛型为String类型

    private val settings = new ConcurrentHashMap[String, String]()
    

    Spark配置可以通过3种方式获取:

    1.系统默认加载

    如果loadDefaults为true,会加载系统配置,通过Utils工具类来取以spark.开头的key,再通过调用set方法配置参数

    if (loadDefaults) {
      loadFromSystemProperties(false)
    }
    
    private[spark] def loadFromSystemProperties(silent: Boolean): SparkConf = {
      // Load any spark.* system properties
      for ((key, value) <- Utils.getSystemProperties if key.startsWith("spark.")) {
        set(key, value, silent)
      }
      this
    }
    

    set方法如下:

    private[spark] def set(key: String, value: String, silent: Boolean): SparkConf = {
      if (key == null) {
        throw new NullPointerException("null key")
      }
      if (value == null) {
        throw new NullPointerException("null value for " + key)
      }
      if (!silent) {
        logDeprecationWarning(key)
      }
      settings.put(key, value)
      this
    }
    

    2.通过set方法设置

    SparkConf中有一系列set方法,比如setMaster、setAppName等,实际上也是调用了set方法对settings进行设置

    3.对SparkConf进行克隆

    SparkConf类继承了Clonable特质并实现了clone方法,可以对Spark的配置进行复制,以便于在任何地方使用

    override def clone: SparkConf = {
      val cloned = new SparkConf(false)
      settings.entrySet().asScala.foreach { e =>
        cloned.set(e.getKey(), e.getValue(), true)
      }
      cloned
    }
    
  • 相关阅读:
    python 装饰器
    python操作hbase
    python 数据压缩
    JsonSchema 启蒙
    python在webservice接口测试中的应用
    简单的python http接口自动化脚本
    解决python2安装MySQL-python模块报错
    实用小工具推荐(一)
    linux和mac使用virtualenv使用和安装
    少年,来点正能量吧!
  • 原文地址:https://www.cnblogs.com/jordan95225/p/13612180.html
Copyright © 2011-2022 走看看