RDD中的依赖关系,宽依赖和窄依赖,容易理解~

这里写图片描述

如上图所示,左边为窄依赖,每个父RDD的分区都被至多一个子RDD分区所用,而宽依赖的多个子分区依赖一个父RDD分区。

例如:map操作是一种窄依赖,join操作是一种宽依赖,groupbykey是一种寛依赖。

用处

第一:窄依赖允许在单个节点上进行流水线式处理,这个节点可以计算所有父级分区,例如可以逐个元素的执行filter()和map()操作,相反,宽依赖需要所有的父RDD分区的数据可用,并且数据已经通过类mapreduce的操作shuffle完成。
第二:在窄依赖中,节点失败后恢复的更加高效,因为只有丢失的父级分区需要重新计算,并且丢失的父级分区可以并行的在不同节点上重新计算;
相反,宽依赖的继承关系中,单个节点的失败可能导致一个RDD的所有先祖RDD中的一些分区丢失,导致计算的重新执行。

猜你喜欢

转载自blog.csdn.net/j904538808/article/details/80089135