DAGScheduler的stage划分算法:
1.从触发action操作的那个RDD开始往前倒推,为最后一个RDD创建一个stage。
2.往前倒推时,如果发现对某个RDD是宽依赖,就将宽依赖的RDD创建一个stage,该RDD就是新stage的最后一个RDD。
3.依次类推,使用递归,最后优先提交父stage。(注:ReduceByKey为例,shuffle操作对应3个RDD,MapPartitionsRDD、ShuffleRDD、MapPartitionsRDD,第一个RDD是上一个stage的)