sparkConf主要通过ConcurrentHashMap来维护各种spark的配置属性,加载以spark开头的属性。加载是通过system类来完成:
而Utils.getSystemProperties是通过system类来加载完成:
spark最主要的用处就是set、get方法了:
除了基本的set,get外,还有getLong..getAll,setAll等工具方法。sparkconf还有检查各个配置参数是否合法,是否过时等,例如检查比例参数:
sparkConf比较简单,sparkContext在初始化的时候会使用一些sparkconf里的参数,其他的类获取参数也从这里获取。
总结一下sparkConf主要作用:
1.获取参数,直接调用get
2.设置参数,直接使用set,无论get还是set使用的都是java的并发集合Map。
3.sparkconf自身默认读取配置文件的参数,对参数进行检查。
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自身默认读取配置文件的参数,对参数进行检查。