spark --RDD宽窄依赖关系

宽窄依赖

●两种依赖关系类型

RDD和它依赖的父RDD的关系有两种不同的类型,即

宽依赖(wide dependency/shuffle dependency)

窄依赖(narrow dependency)

图解

 

如何区分宽窄依赖

窄依赖:父RDD的一个分区只会被子RDD的一个分区依赖

宽依赖:父RDD的一个分区会被子RDD的多个分区依赖(涉及到shuffle)

 

●面试题:

子RDD的一个分区依赖多个父RDD是宽依赖还是窄依赖?

不能确定,也就是宽窄依赖的划分依据是父RDD的一个分区是否被子RDD的多个分区所依赖,是,就是宽依赖,或者从shuffle的角度去判断,有shuffle就是宽依赖

 

●宽窄依赖的算子:

窄依赖算子有:map, filter, union, join(父RDD是hash-partitioned ), mapPartitions, mapValues

宽依赖算子有:groupByKey, join(父RDD不是hash-partitioned ), partitionBy

 

●为什么要设计宽窄依赖

1.对于窄依赖

Spark可以并行计算

如果有一个分区数据丢失,只需要从父RDD的对应1个分区重新计算即可,不需要重新计算整个任务,提高容错。

2.对于宽依赖

是划分Stage的依据 (详细见https://blog.csdn.net/weixin_44036154/article/details/105387304)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值