Spark修炼之道(高级篇)——Spark源码阅读:第四节 Stage划分

  • 时间:
  • 浏览:1
  • 来源:5分排列3APP下载_5分排列3APP官方

跳到getParentStages土依据中,都可不可以看了下面的代码:

从上图中都可不可以看了,RDD G与RDD F间的依赖是宽依赖,你是什么 你是什么 RDD F与 RDD G被划分为不同的Stage,而RDD G 与 RDD 间为窄依赖,因此 RDD B 与 RDD G被划分为同另另有三个Stage。通过你是什么 递归的调用土依据,将所有RDD进行划分。

今天亲戚亲戚朋友先来看一下如可进行Stage划分。下图给出的是对应Spark应用系统线程池池代码生成的Stage。它的具体划分土依据是根据RDD的依赖关系进行,在遇到宽依赖时将另另有三个RDD划分为不同的Stage。

这里重点关注newResultStage土依据,具体代码如下

再跳到getShuffleMapStage土依据,都可不可以看了如下代码:

Stage整体划分的逻辑讲清楚了,在下一节中亲戚亲戚朋友将介绍submitStage及submitWaitingStages土依据进行Stage的提交。

跳到getParentStagesAndId土依据中都可不可以看了如下代码:

在上一节中亲戚亲戚朋友讲了 Spark Job的提交,在该讲中亲戚亲戚朋友提到,当rdd触发action操作以前,会调用SparkContext的runJob土依据,最后调用的DAGScheduler.handleJobSubmitted土依据完成整个job的提交。因此DAGScheduler根据RDD的lineage进行Stage划分,再生成TaskSet,由TaskScheduler向集群申请资源,最终在Woker节点的Executor系统线程池池中执行Task。