目录

前言

一、窄依赖

二、宽依赖

三、使用WC演示窄依赖、宽依赖

四、窄依赖中的join

五、总结


前言

RDD的五大特性之一就是RDD之间有依赖关系,描述了RDD如何从源头计算过来的。

这样可以做到容错,如果某一个RDD分区出现错误,可以根据依赖关系重新计算相关的分区,而不需要全部重新计算。

如果链路关系太长,可以checkpoint下来

本文主要介绍下窄依赖和宽依赖

一、窄依赖

一个父RDD的分区至多被子RDD的某个分区使用一次

1)一个父RDD和一个子RDD的分区是唯一映射的    例如map filter

2)多个父RDD和一个子RDD的分区是唯一映射的    例如union

3)特殊的join 没有shuffle

二、宽依赖

一个父RDD的分区会被子RDD的分区使用多次

例如join、groupByKey、reduceByKey、...ByKey  有shuffle、产生新的stage

三、使用WC演示窄依赖、宽依赖

代码

val lines = sc.parallelize(Array("hello,spark", "hello,flink", "hello,hadoop"))
val words = lines.flatMap(_.split(","))
val pair = words.map((_, 1))
val wc = pair.reduceByKey(_ + _)
wc.collect()

DAG图

四、窄依赖中的join

其实宽窄依赖通过以上的例子已经了解的差不多了。

下面来介绍其中的一个特例:窄依赖中的join

join的俩哥们是宽依赖(存在shuffle),分区数相同,join后的分区数也相同,则为窄依赖

    val rdd1 = sc.parallelize(Array("zs", "ls", "ww"), 2).map((_, 1)).reduceByKey(_ + _)val rdd2 = sc.parallelize(Array("hz", "sh", "bj","gz"), 2).map((_, 1)).reduceByKey(_ + _)rdd1.join(rdd2,2).collect()

五、总结

窄依赖:父类只有一个孩子,不存在shuffle,例如map、filter

宽依赖:父类有多个孩子,存在shuffle,例如groupByKey、reduceByKey

需要注意的是:join的俩哥们如果是宽依赖(存在shuffle),并且分区数量相同,join后的结果也相同,则为窄依赖,其他情况的join为宽依赖。

在业务中,为了方便容错回溯,尽量少使用宽依赖。

Spark RDD的窄依赖和宽依赖相关推荐

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

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

  2. Spark _08窄依赖和宽依赖stage

    专业术语: 窄依赖和宽依赖 RDD之间有一系列的依赖关系,依赖关系又分为窄依赖和宽依赖. 窄依赖 父RDD和子RDD partition之间的关系是一对一的.或者父RDD一个partition只对应一 ...

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

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

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

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

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

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

  6. Spark 的join 什么时候是宽依赖什么时候是窄依赖

    1准备数据 spark-shell --master spark://linux01:7077 --executor-meg --total-executor-cores 4 val sc: Spar ...

  7. Spark RDD 宽依赖窄依赖

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

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

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

  9. 宽依赖和窄依赖_Spark RDD中的依赖关系:宽依赖和窄依赖narrow/widedependency

    前言:前面我们讲过,RDD的转化Transformation操作是一个RDD生成另一个新的RDD的过程,那么新的RDD必然依赖原来的RDD.那么RDD的依赖分为几种,分别是什么含义呢?为什么要分类呢? ...

最新文章

  1. easyPR源码解析之plate_locate.h
  2. C#:生成哈希字符串
  3. git回滚到之前代码
  4. 安装python以及pycharm
  5. opencv 图像处理应用之车道检测
  6. 大数据技术在物流中的应用
  7. express + uniapp发送图片和保存图片
  8. Spring StringUtils类中几个有用的字符串处理方法
  9. Kotlin 官方参考文档翻译完毕
  10. Coded UI 自动化测试初步研究
  11. 如何使用Python给自己的头像添加国旗
  12. mysql migration 使用_Mysql下使用EFCore的CodeFirst和Migration功能
  13. 微软Azure给openAI提供了多少机器资源
  14. 怎么把ofd转换成PDF文件?分享给你个好用的方法。
  15. java操作word(一)
  16. 20200404零基础入门数据挖掘 - 二手车交易价格预测笔记(5)
  17. Integer 用 == 比较时 127 相等 128 不相等
  18. 1875 丢手绢 约瑟夫环变形 枚举
  19. PID控制通俗解释与PID参数的整定方法--以温控系统为例
  20. 面试官:你先回去等通知吧!这个 Java 岗位我还有机会吗?

热门文章

  1. 什么是“ Gacha”视频游戏?
  2. 聊聊 Vue 中 provide/inject 的应用
  3. CFO和财务VP的OKR案例,打造并领导世界一流的金融团队
  4. 小程序开发------文件目录结构
  5. 如何设计一个简单的网页
  6. WhatsApp是啥软件?WhatsApp是什么意思?
  7. Linux中的括号用法
  8. ubuntu挂载4T新硬盘记录
  9. 波音飞机计算机论文,飞机制造毕业论文范文.doc
  10. ant - java 构建工具