v> RDD 任务切分中间分为:Application、Job、Stage 和 Task Application:初始化一个 SparkContext 即生成一个 Application; Job:一个 Action 算子就会生成一个 Job; Stage:Stage 等于宽依赖(ShuffleDependency)的个数加 1; Task:一个 Stage 阶段中,最后一个 RDD 的分区个数就是 Task 的个数。 注意:Application->Job->Stage->Task 每一层都是 1 对 n 的关系。 源码分析: 第一步:handleJobSubmitted()函数中
第二步:进入submitStage(),查看下方submitMissingTasks()这一段代码,与任务Task划分有关
匹配阶段shuffleMapStage or ResultStage
每个case中的new Task的个数,即为任务的个数
Task个数与map映射的size有关
map的size取决于partitionsToCompute的结果
DAGSchedluer.scala
DAGSchedluer.scala的submitMissingTasks方法
第三步:进入partitionsToCompute,复制findMissingPartitions,因为findMissingPartitions是stage的属性,stage此时为ResultStage(以ResultStage为例),因此后退,点击ResultStage,搜索findMissingPartitions
DAGSchedluer.scala
其中job.numPartitions是来自于当前阶段最后一个RDD的分区数
标签:Task,Application,个数,任务,RDD,划分,Job,Stage From: https://www.cnblogs.com/huifeidezhuzai/p/18025794