Spark中宽依赖和窄依赖的区别

一、什么是宽依赖、窄依赖

Spark中RDD的高效与DAG(有向无环图)有着莫大的关系,在DAG调度中我们需要对计算过程划分stage,而划分依据就是RDD之间的依赖关系。针对不同的转换函数,RDD之间的依赖关系分为宽依赖和窄依赖。那么到底什么是宽依赖和窄依赖的?

1、宽依赖:是指1个父RDD分区对应多个子RDD的分区

2、窄依赖:是指一个或多个父RDD分区对应一个子RDD分区

简单的说就是我们在数学中的映射关系

宽依赖就是1对多,窄依赖就是一对一或者多对一。如图:

二、区别

由上面的图我们很容易看出他们的区别,窄依赖父RDD的每个分区只被子RDD的一个分区所使用,宽依赖父RDD的每个分区都可能被多个子RDD分区所使用

在此将其分为两种模式,一定有其利弊情况,接在来我们简单聊一下。

首先根据我们上面的理解知道窄依赖是将其聚合到一起,收拢数据,这样我们就可以考虑到我们的一些算子就做此功能比如:map, filter, union, join(父RDD是hash-partitioned ), mapPartitions, mapValues;

而宽依赖则不同,宽依赖将其数据进行打散分开,走shuffle机制与mapreduce相同。他主要将一些数据进行洗牌和重新分组发牌。这里也有一些算子做此功能:groupByKey, join(父RDD不是hash-partitioned ), partitionBy,sort

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值