中间件速查手册
大数据计算Narrow / Wide Dependency

宽窄依赖 是什么?

窄依赖一个分区只依赖一个父分区,宽依赖要等所有父分区

类比:一对一交接班是窄依赖,全员到齐才能开会是宽依赖

窄依赖

map、filter、union、mapPartitions 都是窄依赖:父 RDD 的每个分区只被一个子分区使用。这种关系可以流水线执行,一个分区算完直接往下传,不需要等别人,也不需要落盘。

宽依赖

groupByKey、reduceByKey、join(非 broadcast)是宽依赖:子分区的数据来自所有父分区。必须等父 Stage 全部写完,才能开始 shuffle read,这就是 Stage 被切开的原因。

容错上的差别

窄依赖丢了一个分区,只需要重算对应的那个父分区;宽依赖丢了一个分区,可能要重算所有父分区。所以宽依赖的失败恢复代价高得多,也是“尽量少 shuffle”的另一个原因。

它出现在这些中间件里

相关概念