本文主要是介绍SparkCore(14):RDD宽依赖和窄依赖,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一、两者区别的架构
1.宽依赖和窄依赖操作算子的区别
2.宽依赖和窄依赖类型区别
二、概念
1.窄依赖
(1)概念
子RDD的每个分区的数据来自常数个父RDD分区;父RDD的每个分区的数据到子RDD的时候在一个分区中进行处理。即,父依赖的每个分区都分到子依赖的一个分区中
(2)对应算子
(a)输入输出一对一的算子,且结果 RDD 的分区结构不变,主要是 map 、 flatMap
(b)输入输出一对一,但结果 RDD 的分区结构发生了变化,如 union 、 coalesce(要求shuffle 参数为false)
(c)从输入中选择部分元素的算子,如 filter 、 subtract 、 sample
(3)窄依赖类型:
RangeDependency
OneToOneDependency
2.宽依赖
(1)概念
子RDD的每个分区的数据来自所有的父RDD分区;父RDD的每个分区的数据都有可能分配到所有的子RDD分区中
(2)对应算子
(a)对单个 RDD 基于 key 进行重组和 reduce ,如 groupByKey 、 distinct 、 reduceByKey ;
(b)对两个 RDD 基于 key 进行 join 和重组,如 join(分区数量进行改变)
(3)宽依赖类型:
shuffleDependency
这篇关于SparkCore(14):RDD宽依赖和窄依赖的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!