spark配置
SparkConf
是Spark的配置类.1
private val settings = new ConcurrentHashMap[String, String]()
配置以[String, String]的形式保存在ConcurrentHashMap
中。配置Spark参数有以下三种形式:
1. 系统属性中以"spark."开头的属性
2. 调用SparkConf的api
3. 从其他SparkConf克隆
其中,直接通过SparkConf设置的属性优先级比系统属性优先级高
系统属性中以”spark.”开头的属性
1 | class SparkConf(loadDefaults: Boolean) extends Cloneable with Logging with Serializable { |
可以看到,loadDefaults
参数决定是否使用系统参数中以 spark.
开头的属性,并将其保存到settings中。默认是true
直接设置SparkConf
1 | /** Set a configuration variable. */ |
部分setXxx自动设置了key
clone
当spark多个组件共享配置,可以
- 把SparkConf变量共享,或通过参数传递给其他组件。但并发下,ConcurrentHashMap性能下降
- 使用clone(),优雅,避免复制代码臃肿
1 | /** Copy this object */ |