spark中宽依赖、shuffle、stage的理解

宽依赖、shuffle、stage的理解

首先,stage内的多个task分别处理不同分区的数据,是并行执行的。而stage之间,是要从前往后依次执行的。

在窄依赖中,父RDD的一个分区的数据只会发往子RDD的一个分区,即子RDD的数据通常确定的来自于父RDD的某一个或几个分区的数据,因此可以在一个executor的一个task上以流水线的方式(pipeline)顺序执行多个算子,完成计算。

在宽依赖中,一个父RDD的分区的数据可能要发往多个子RDD的分区,即子RDD的数据通常来自于父RDD的所有分区,更本质的说法是,无法事先确定父RDD的一个分区的数据该如何发往子RDD的分区。因此子RDD的数据无法进行分区间的并行计算;只能等待父RDD的所有分区的数据计算完毕后,进行各分区数据的打乱分发,重新组合,即shuffle。

因此,窄依赖的RDD划分在一个stage内,各分区数据并行执行;宽依赖的RDD划分为不同stage,等待上游Stage执行完毕,进行shuffle完成数据的打乱重组。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值