几张图搞懂 RDD(Resilient Distributed Datasets) 窄依赖 和 宽依赖:
Dependency.scala 源码里类图关系如下:
OneToOneDependency[T] 和 RangeDependency[T] 对应的RDD 依赖关系如下:
其中RangeDependency[T] 只是在 UnionRDD里被使用
《Spark设计与实现》里列举了1->1 N->1 N->N 的债依赖,跟代码对不上了,代码里也没有“each partition of the parent RDD is used by at most one partition of the child RDD”注释。《Spark设计与实现》里截图如下:
结论:Spark 的窄依赖其实都是1->1的依赖关系,其它的都是宽依赖。