spark四 依赖和shuffle
宽依赖和窄依赖
我画的
官网的
也就是说:
宽依赖:多个子RDD的Partition会依赖同一个父RDD的Partition,此时就是发生了shuffle
shuffle标准:发生了宽依赖
依赖的作用:
RDD只支持粗粒度转换,即在大量记录上执行的单个操作。将创建RDD的一系列Lineage(即血统,依赖)记录下来,以便恢复丢失的分区。RDD的Lineage会记录RDD的元数据信息和转换行为,当该RDD的部分分区数据丢失时,它可以根据这些信息来重新运算和恢复丢失的数据分区。
但是
必然的,窄依赖复用率更高,因此尽量避免shuffle(还有其他原因,这只是其中之一)
经常发生shuffle的算子:
join,groupBY,reduceBy,countBy,还有分区的那些算子等等
补充