RDD的依赖关系
窄依赖
每个父RDD的一个Partition最多被子RDD的一个Partition所使用,例如map,filter,union等都会产生窄依赖;
宽依赖
一个父RDD的Partition会被多个子RDD的Partition所使用,例如groupByKey,reduceByKey,sortByKey等操作都会产生宽依赖。
总结:
如果父RDD的一个Partition被一个子RDD的Partition所使用就是窄依赖,否则就是宽依赖。
特别说明:
对join操作有两种情况,如果join操作的使用每个partition仅仅和已知的Partition进行join,这种join操作就是窄依赖;其他情况的join就是宽依赖。因为是确定的Partition数量的依赖关系,所以就是窄依赖,得出一个推论,窄依赖不仅包含一对一的窄依赖,还包含一对固定个数的窄依赖(也就是说父RDD的依赖的Partition的数量不会随着RDD数据规模的改变而改变)