我们都知道依赖分为两种:宽依赖和窄依赖。
如图所示一个方框表示一个RDD,实心蓝底的框表示partition,从图中可以看出,宽依赖与窄依赖的区分主要是父partition与子partition的对应关系(注:前一个为后一个partition的父partition)。
窄依赖(图左):父partition对子partition是一对一或多对一。
宽依赖(图右):父partition对子partition是一对多。
窄依赖一般是对RDD进行map,filter,union等Transformations。宽依赖一般是对RDD进行groupBYKey操作,说白就是对RDD进行重分区,而join即可能是宽依赖也可能是窄依赖,其区别是,当要对RDD进行join操作时,如果RDD进行过重分区则为窄依赖,否则为宽依赖。