在Spark中,对RDD进行的每一次转化操作都会生成一个新的RDD,由于RDD的懒加载特性,新的RDD会依赖原有RDD,因此RDD之间存在类似流水线的前后依赖关系。这种依赖关系分为两种:窄依赖和宽依赖。
一:窄依赖
窄依赖是指父RDD的一个分区最多被子RDD的一个分区所用。例如map()、filter()、union()等操作都会产生窄依赖。
二:宽依赖
宽依赖是指,父RDD的一个分区被子RDD的多个分区所用。例如groupByKey()、reduceByKey()、sortByKey()等操作都会产生宽依赖。
注意:
1. 对于join算子,两种依赖都可能产生!
2. 在数据容错方面,窄依赖要优于宽依赖。当子RDD的某一个分区的数据丢失时,若是窄依赖,只需重算和该分区对应的父RDD分区即可,而宽依赖则可能需要重算父RDD的所有分区。
标签:依赖,两种,分区,RDD,被子,操作 From: https://www.cnblogs.com/tianpan666/p/17967433