前言 spark任务启动时获取参数方式
在启动spark程序时先要进行参数配置,也就是通过new SparkConf()来设置spark程序所需的参数,底层数据结构是 key-value pairs
private val settings = new ConcurrentHashMap[String, String]()
spark获取参数方式有三种:
1、源自于系统参数 以spark.参数开头的属性,
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
}
2、使用sparkConf相关API设置的那部分
/** Set a configuration variable. */
def set(key: String, value: String): SparkConf = {
set(key, value, false)
}
3、从别的SparkConf克隆过来
/** Copy this object */
override def clone: SparkConf = {
val cloned = new SparkConf(false)
settings.entrySet().asScala.foreach { e =>
cloned.set(e.getKey(), e.getValue(), true)
}
cloned
}
sparkContext介绍
每个driver都包含一个sc对象,spark driver端初始化围绕着 SparkContext初始化,因此需要了解sparkContext包含哪些部分:
- SparkEnv : spark运行时环境
- SparkStatusTracker:job stage的监控信息
- TaskScheduler:作业调度器
- DAGScheduler:DAG,负责创建job,将dag中的RDD划分到不同的stage、提交stage等,
- sparkUI界面
- ...