【Spark源码】RDD阶段划分&任务划分

工具环境

  • Intellij Idea 2018.03
  • spark3.0.0
<dependencies>
    <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-core_2.12</artifactId>
        <version>3.0.0</version>
    </dependency>
</dependencies>

概述

RDD 任务切分中间分为:Application、Job、Stage 和 Task

  • Application(应用程序):初始化一个 SparkContext 即生成一个Application;整个程序即为一个Application,代码中setAppName是为主程序起名字
  • Job(作业):一个Action(行动算子) 算子就会生成一个Job;
  • Stage:Stage 等于宽依赖(ShuffleDependency)的个数加 1;
  • Task:一个 Stage 阶段中,最后一个RDD 的分区个数就是Task 的个数。

注意:Application->Job->Stage->Task 每一层都是 1 对 n 的关系。

  • 一个应用程序Application中包含多个行动算子,即包含多个作业Job
  • 一个作业中包含多个shuffle依赖,即包含多个阶段Stage
  • 一个阶段的最后一个RDD会有多个分区,即包含多个Task

RDD阶段划分

核心代码

private[scheduler] def getShuffleDependencies(
    rdd: RDD[_]): HashSet[ShuffleDependency[_, _, _]] = {
   
  val parents = new HashSet[ShuffleDependency[_, _, _]]
  val visited = new HashSet
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值