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

  • 时间:
  • 浏览:1
  • 来源:大发PK10APP下载_大发PK10APP官方

这里重点关注newResultStage法律办法,具体代码如下

Stage整体划分的逻辑讲清楚了,在下一节中我们歌词 都 将介绍submitStage及submitWaitingStages法律办法进行Stage的提交。

在上一节中我们歌词 都 讲了 Spark Job的提交,在该讲中我们歌词 都 提到,当rdd触发action操作后后,会调用SparkContext的runJob法律办法,最后调用的DAGScheduler.handleJobSubmitted法律办法完成整个job的提交。然后DAGScheduler根据RDD的lineage进行Stage划分,再生成TaskSet,由TaskScheduler向集群申请资源,最终在Woker节点的Executor守护tcp连接中执行Task。

跳到getParentStagesAndId法律办法中可不还都可以 看得人如下代码:

今天我们歌词 都 先来看一下怎么都可以进行Stage划分。下图给出的是对应Spark应用守护tcp连接代码生成的Stage。它的具体划分办法是根据RDD的依赖关系进行,在遇到宽依赖时将另另一个多多RDD划分为不同的Stage。

跳到getParentStages法律办法中,可不还都可以 看得人下面的代码:

再跳到getShuffleMapStage法律办法,可不还都可以 看得人如下代码:

从上图中可不还都可以 看得人,RDD G与RDD F间的依赖是宽依赖,很多RDD F与 RDD G被划分为不同的Stage,而RDD G 与 RDD 间为窄依赖,然后 RDD B 与 RDD G被划分为同另另一个多多Stage。通过你你这俩 递归的调用法律办法,将所有RDD进行划分。