1、DAG
DAG图中,每个节点都是RDD
窄依赖(也叫narrow依赖)
从父RDD角度看:一个父RDD只被一个子RDD分区使用。父RDD的每个分区最多只能被一个Child RDD的一个分区使用
从子RDD角度看:依赖上级RDD的部分分区 精确知道依赖的上级RDD分区,会选择和自己在同一节点的上级RDD分区,没有网络IO开销,高效。
窄依赖包括:
OneToOneDependency
PruneDependency
RangeDependency
对应的RDD方法包括:
map
mapValues
flatMap
filter
mapPartitions
mapPartitionsWithIndex
宽依赖(也叫shuffle依赖/wide依赖)
从父RDD角度看:一个父RDD被多个子RDD分区使用。父RDD的每个分区可以被多个Child RDD分区依赖
从子RDD角度看:依赖上级RDD的所有分区 无法精确定位依赖的上级RDD分区,相当于依赖所有分区(例如reduceByKey) 计算就涉及到节点间网络传输。
宽依赖通常的dependency为ShuffleDependency
对