DAGScheduler之Job的提交划分Stage

Spark DAGScheduler:Stage划分详解
本文深入解析Spark的DAGScheduler如何将Job划分为Stage,通过源码分析`getOrCreateParentStages`、`getShuffleDependencies`、`getOrCreateShuffleMapStage`和`getMissingAncestorShuffleDependencies`等关键步骤,结合实例展示了Stage的创建过程和最终划分结果。

整体流程图

在这里插入图片描述

源码分析 spark 2.3

getOrCreateParentStages 创建所有祖先Stage
/**
   * Get or create the list of parent stages for a given RDD.  The new Stages will be created with
   * the provided firstJobId.
   */
  private def getOrCreateParentStages(rdd: RDD[_], firstJobId: Int): List[Stage] = {
    // getShuffleDependencies 获取RDD的第一层直接宽依赖
    getShuffleDependencies(rdd).map { shuffleDep =>
      //getOrCreateShuffleMapStage 创建rdd对应的所有祖先Stage
      getOrCreateShuffleMapStage(shuffleDep, firstJobId)
    }.toList
  }
getShuffleDependencies 获取RDD的第一层直接宽依赖
  /**
   * Returns shuffle dependencies that are immediate parents of the given RD
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值