SparkContext作为整个Spark的入口,不管是spark、sparkstreaming、spark sql都需要首先创建一个SparkContext对象,然后基于这个SparkContext进行后续RDD的操作;所以很有必要了解下SparkContext在初始化时干了什么事情。
SparkContext初始化过程主要干了如下几件事情:
1、根据SparkContext的构造入参SparkConf创建SparkEnv;
2、初始化SparkUI;
3、创建TaskScheduler;
4、创建DAGScheduler;
5、启动taskScheduler;
通过源代码说明SparkContext初始化的过程
1、创建SparkEnv
private[spark] val env = SparkEnv.create( conf, "<driver>", conf.get("spark.driver.host"), conf.get("spark.driver.port").toInt, isDriver = true, isLocal = isLocal, listenerBus = listenerBus) SparkEnv.set(env)
2、初始化SparkUI
private[spark] val ui = new SparkUI(this) ui.bind()
3、创建TaskScheduler:根据spark的运行模式创建不同的SchedulerBackend