Stage划分算法
1.Spark Application中可以因为不同的Action触发众多的Job,也就是说一个Application中可以有很多的Job,每个Job是由一个或者多个Stage构成的,后面的Stage依赖于前面的Stage,也就是说只有前面的Stage计算完毕后,后面的Stage才会运行。
2.Stage划分的依据就是宽依赖,reduceByKey、groupByKey等
3.由Action(例如collect)导致了SparkContext.runJob的执行,最终导致了DAGScheduler中的submitJob执行,其核心思想是通过发送一个case class JobSubmitted对象给EventProcessLoop。
4.在handleJobSubmitted中首先创建finalStage,创建finalStage是创建父Stage的依赖链条