Spark - 宽依赖 & 窄依赖

  • 宽依赖:指一个父RDD的Partition会被多个子RDD的Partition所使用,例如,groudByKey,ReduceByKey,sortByKey等操作都会产生宽依赖。
  • 窄依赖:指每个父RDD的一个Partition最多被子RDD的一个Partition所使用,例如,Map,filter,union等操作都会产生窄依赖。

在这里插入图片描述
需要注意的是,如果两个RDD在进行join操作时,一个RDD的partition仅仅和另一个已知个数的Partition进行join,那么这种类型的join操作就是窄依赖。

那为什么要将RDD分为宽依赖和窄依赖呢?
1)窄依赖可以支持在同一个集群节点上以管道形式执行多条命令,处理速度快,相反,宽依赖需要所有的父分区都是可用的,可能还需要调用类似MapReduce之类的操作进行跨节点传递。
2)从失败恢复的角度考虑,窄依赖的失败恢复更有效,因为它只需要重新计算丢失的parent partition就可以了,而且可以并行地在不同节点进行重计算。而宽依赖牵涉到RDD各级的等多个parent partition.

综上所述,也就是说,如果父RDD的一个Partition被子RDD的一个Partition所使用就是窄依赖,否则就是宽依赖。

猜你喜欢

转载自blog.csdn.net/aubekpan/article/details/89148039