宽依赖与窄依赖区别 窄依赖(narrow dependencies) 子RDD的每个分区依赖于常数个父分区(与数据规模无关) 输入输出一对一的算子,且结果RDD的分区结构不变。主要是map/flatmap 输入输出一对一的算子,但结果RDD的分区结构发生了变化,如union/coalesce 从输入中选择部分元素的算子,如filter、distinct、substract、sample 宽依赖(wide dependencies) 子RDD的每个分区依赖于所有的父RDD分区 对单个RDD基于key进行重组和reduce,如groupByKey,reduceByKey 对两个RDD基于key进行join和重组,如join 经过大量shuffle生成的RDD,建议进行缓存。这样避免失败后重新计算带来的开销。 注意:reduce是一个action,和reduceByKey完全不同。