spark源码阅读(十三)---sparkConf类

sparkConf主要通过ConcurrentHashMap来维护各种spark的配置属性,加载以spark开头的属性。加载是通过system类来完成:
if (loadDefaults) {
    // Load any spark.* system properties
    for ((key, value) <- Utils.getSystemProperties if               key.startsWith("spark.")) {
      set(key, value)
    }
  }


  而Utils.getSystemProperties是通过system类来加载完成:
def getSystemProperties: Map[String, String] = {
    val sysProps = for (key <-     System.getProperties.stringPropertyNames()) yield
      (key, System.getProperty(key))


    sysProps.toMap
  }


spark最主要的用处就是set、get方法了:
  def get(key: String): String = {
    getOption(key).getOrElse(throw new NoSuchElementException(key))
  }
  
def set(key: String, value: String): SparkConf = {
    if (key == null) {
      throw new NullPointerException("null key")
}
    if (value == null) {
      throw new NullPointerException("null value for " + key)
}
    settings.put(key, value)
    this
}


  
除了基本的set,get外,还有getLong..getAll,setAll等工具方法。sparkconf还有检查各个配置参数是否合法,是否过时等,例如检查比例参数:
    // Validate memory fractions
    val memoryKeys = Seq(
      "spark.storage.memoryFraction",
      "spark.shuffle.memoryFraction",
      "spark.shuffle.safetyFraction",
      "spark.storage.unrollFraction",
      "spark.storage.safetyFraction")
    for (key <- memoryKeys) {
      val value = getDouble(key, 0.5)
      if (value > 1 || value < 0) {
        throw new IllegalArgumentException("$key should be between 0 and 1 (was '$value').")
      }
    }



sparkConf比较简单,sparkContext在初始化的时候会使用一些sparkconf里的参数,其他的类获取参数也从这里获取。


总结一下sparkConf主要作用:
1.获取参数,直接调用get
2.设置参数,直接使用set,无论get还是set使用的都是java的并发集合Map。
3.sparkconf自身默认读取配置文件的参数,对参数进行检查。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值