Spark计算数据是基于pipeline模式的,在介绍spark如何进行pipeline计算之前首先要知道spark计算的核心是RDD,RDD之间是有依赖关系的,这种依赖关系分宽依赖和窄依赖,那么问题来了,RDD之间的宽窄依赖是如何划分的呢?
在上一篇博客中提到:(https://blog.csdn.net/Chris_MZJ/article/details/84198189 )RDD内部是由一系列的partition组成的:
宽窄依赖划分
宽窄依赖就是根据RDD与RDD之间的partition的对应关系划分的,我们来看下图:
左半部分是RDD之间的窄依赖关系,右半部分是宽依赖关系。
从上图可以看出RDD1执行map或filter操作得到RDD2过程中,RDD1中的三个partition中的数据都流向了RDD2的三个partition中,且每一个partition中的数据都只流向了同一个partition中(RDD实际上是不存数据的,流动的是逻辑),我们就称RDD1和RDD2是窄依赖关系。同理,RDD3和RDD4执行union操作得