【摘要】:Spark将依赖进一步分为两类,分别是窄依赖和Shuffle依赖。图6-2展示了几类常见的Shuffle依赖及其对应的转换操作。图6-2 常见Shuffle依赖及其对应的转换操作依赖关系是两个RDD之间的依赖,因此若一次转换操作中父RDD有多个,则可能会同时包含窄依赖和Shuffle依赖,如图6-3所示的join操作,RDD a和RDD c采用了相同的分区器,两个RDD之间是窄依赖,Rdd b的分区器与RDD c有所不同,因此它们之间是Shuffle依赖。
Spark将依赖进一步分为两类,分别是窄依赖(Narrow Dependency)和Shuffle依赖(Shuffle Dependency,也被称为Wide Dependency,即宽依赖)。
窄依赖中,父RDD中的一个分区最多只会被子RDD中的一个分区使用,换句话说,父RDD中,一个分区内的数据是不能被分割的,必须整个交付给子RDD中的一个分区。图6-1展示了几类常见的窄依赖及其对应的转换操作。
图6-1 常见窄依赖及其对应的转换操作
Shuffle依赖中,父RDD中的分区可能会被多个子RDD分区使用。因为父RDD中一个分区内的数据会被分割,发送给子RDD的所有分区,因此Shuffle依赖也意味着父RDD与子RDD之间存在着Shuffle过程,Shuffle过程的细节本书会在第8章中讲述。图6-2展示了几类常见的Shuffle依赖及其对应的转换操作。(www.xing528.com)
图6-2 常见Shuffle依赖及其对应的转换操作
依赖关系是两个RDD之间的依赖,因此若一次转换操作中父RDD有多个,则可能会同时包含窄依赖和Shuffle依赖,如图6-3所示的join操作,RDD a和RDD c采用了相同的分区器,两个RDD之间是窄依赖,Rdd b的分区器与RDD c有所不同,因此它们之间是Shuffle依赖。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。