专业术语:

窄依赖和宽依赖

RDD之间有一系列的依赖关系,依赖关系又分为窄依赖和宽依赖。

  • 窄依赖

父RDD和子RDD partition之间的关系是一对一的。或者父RDD一个partition只对应一个子RDD的partition情况下的父RDD和子RDD partition关系是多对一的。不会有shuffle的产生。

  • 宽依赖

父RDD与子RDD partition之间的关系是一对多。会有shuffle的产生。

宽窄依赖图理解

Stage

Spark任务会根据RDD之间的依赖关系,形成一个DAG有向无环图,DAG会提交给DAGScheduler,DAGScheduler会把DAG划分相互依赖的多个stage,划分stage的依据就是RDD之间的宽窄依赖。遇到宽依赖就划分stage,每个stage包含一个或多个task任务。然后将这些task以taskSet的形式提交给TaskScheduler运行。

stage是由一组并行的task组成。

  • stage切割规则

切割规则:从后往前,遇到宽依赖就切割stage。

  • stage计算模式

pipeline管道计算模式,pipeline只是一种计算思想,模式。

  • 数据一直在管道里面什么时候数据会落地?
  1. 对RDD进行持久化。
  2. shuffle write的时候。
  • Stage的task并行度是由stage的最后一个RDD的分区数来决定的 。
  • 如何改变RDD的分区数?

例如:reduceByKey(XXX,3),GroupByKey(4)

  • 测试验证pipeline计算模式
    val conf = new SparkConf()conf.setMaster("local").setAppName("pipeline");val sc = new SparkContext(conf)val rdd = sc.parallelize(Array(1,2,3,4))val rdd1 = rdd.map { x => {println("map--------"+x)x}}val rdd2 = rdd1.filter { x => {println("fliter********"+x)true} }rdd2.collect()sc.stop()
package SparkRadioimport org.apache.spark.{SparkConf, SparkContext}/*** 验证pipeline*/
object PipelineDemo {def main(args: Array[String]): Unit = {val conf = new SparkConf().setMaster("local").setAppName("pip")val sc = new SparkContext(conf)sc.setLogLevel("error")val rdd1 = sc.textFile("./data/words.txt")val rdd2 = rdd1.map(x => {println("*** map ***" + x)x + "~"})val rdd3 = rdd2.filter(one => {println("=== filter ===" + one)true})rdd3.count()}
}

Spark _08窄依赖和宽依赖stage相关推荐

  1. Spark RDD的窄依赖和宽依赖

    目录 前言 一.窄依赖 二.宽依赖 三.使用WC演示窄依赖.宽依赖 四.窄依赖中的join 五.总结 前言 RDD的五大特性之一就是RDD之间有依赖关系,描述了RDD如何从源头计算过来的. 这样可以做 ...

  2. spark系列11:RDD之间的依赖关系,窄依赖和宽依赖

    1.RDD 之间的依赖关系 导读 讨论什么是 RDD 之间的依赖关系 继而讨论 RDD 分区之间的关系 最后确定 RDD 之间的依赖关系分类 完善案例的逻辑关系图 什么是 RDD 之间的依赖关系? 什 ...

  3. 宽依赖和窄依赖_Spark宽依赖和窄依赖深度剖析

    宽依赖和窄依赖深度剖析.png RDD依赖关系与stage划分 Spark中RDD的高效与DAG图有着莫大的关系,在DAG调度中需要对计算过程划分stage,而划分依据就是RDD之间的依赖关系. 1. ...

  4. RDD的依赖关系、窄依赖、宽依赖、RDD的缓存、RDD缓存方式、DAG的生成、RDD容错机制之Checkpoint

    1.RDD的依赖关系 RDD和它依赖的父RDD(s)的关系有两种不同的类型,即窄依赖(narrow dependency)和宽依赖(wide dependency). 1.1.窄依赖 窄依赖指的是每一 ...

  5. spark中stage的划分与宽依赖/窄依赖(转载+自己理解/整理)

    [1]宽依赖和窄依赖,这是Spark计算引擎划分Stage的根源所在,遇到宽依赖,则划分为多个stage,针对每个Stage,提交一个TaskSet: 上图:一张网上的图: (个人笔记,rdd中有多个 ...

  6. Spark RDD 宽依赖窄依赖

    Spark RDD 宽依赖&窄依赖 1.窄依赖 2.宽依赖: 3.阶段的划分 4.宽依赖和窄依赖的作用: 1.窄依赖 每一个父RDD的Partition最多被子RDD的一个Partition使 ...

  7. Spark RDD的宽依赖和窄依赖

    系列文章目录 Spark RDD 的宽窄依赖关系 一.RDD的依赖关系? 在 Spark 中,RDD 分区的数据不支持修改,是只读的.如果想更新 RDD 分区中的数据,那么只 能对原有 RDD 进行转 ...

  8. 宽依赖和窄依赖_Spark术语解释及宽窄依赖执行原理,代码分析

    1. 术语解释 2. 窄依赖和宽依赖: RDD之间有一系列的依赖关系,依赖关系又分为窄依赖和宽依赖. 窄依赖: 父RDD和子RDD partition之间的关系是一对一的.或者父RDD一个partit ...

  9. 宽依赖和窄依赖_spark的宽依赖窄依赖

    1RDD的依赖关系及容错 1.1RDD的依赖关系 RDD的依赖关系分为两种:窄依赖(Narrow Dependencies)与宽依赖(Wide Dependencies,源码中称为ShuffleDep ...

最新文章

  1. C++ static
  2. Vue项目中使用wangEditor富文本输入框(推荐)
  3. Android Studio:missing feature Watch
  4. MAT之GA:遗传算法(GA)解决M-TSP多旅行商问题
  5. linux磁盘分区fdisk命令详解
  6. C#中字段、属性、只读、构造函数赋值、反射赋值的相关
  7. 电池供电的电容麦_电容话筒受潮了怎么办?
  8. 阿里通报前淘宝直播运营负责人违规:接受礼品及款待,安排女友入职合作方...
  9. pycharm pip安装_pycharm无法调用pip安装的第三方库
  10. 加载mySQL数据到内存_【测试验证】数据库加载到内存占用大小
  11. 计算机网络综合应用实验报告,计算机网络综合实验报告
  12. 谷歌验证码无法显示问题
  13. [0 to 0.5]从零开始学习Android动画知识(上)
  14. 电路(第五版)邱关源 第一章总结
  15. 使用U盘重装MacBook Air时用到的工具和镜像
  16. three.js 05-01 之 PlaneGeometry 几何体
  17. 中医-常用药食同源的食物功效作用
  18. html5画图论文结束语,基于HTML5 Canvas画图软件的设计与实现.doc
  19. mysql引擎与优化
  20. C++ 程序编译过程:从代码到程序

热门文章

  1. 中石油训练赛 - 奎奎发红包(贪心)
  2. ftp服务器文件查找功能,ftp服务器端查找功能
  3. 图书管理系统c++_校园图书系统写后感
  4. Lua table(表)
  5. 《openssl 编程》之数据压缩
  6. Windbg教程-调试非托管程序的基本命令中
  7. apr_pool -- 内存池
  8. 【玩转cocos2d-x之三十六】Flappy Bird大集结
  9. extern用法详解
  10. C++ 基础 : 函数重载、引用、内联函数、auto、范围for循环