SparkCore(14):RDD宽依赖和窄依赖

xiaoxiao2025-11-08  5

一、两者区别的架构

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

转载请注明原文地址: https://www.6miu.com/read-5039263.html

最新回复(0)