join shuffle
什么是宽窄依赖,及特殊join算子,join时何时产生shuffle,何时不产生shuffle 转载 从0到1哦 发布于2018-11-11 15:39:18 阅读数 696 收藏 展开 1、 什么是宽窄依赖, 宽依赖: 发生shuffle时,一定会产生宽依赖,宽依赖是一个RDD中的一个Partition被多个子Partition所依赖(一个父亲多有儿子),也就是说每一个父RDD的Partition中的数据,都可能传输一部分到下一个RDD的多个partition中,此时一定会发生shuffle 窄依赖: 一个RDD中的一个 Partition最多 被一个 子 Partition所依赖(一个父亲有一个儿子) 2、 Spark中产生宽窄依赖的依据是shuffle,当发生shuffle时,会产生宽依赖,基本上shuffle算子都会产生宽依赖,但是join除外,在执行join算子之前如果先执行groupByKey,执行groupByKey之后,会把相同的key分到同一个分区,再执行join算子,join算子是把key相同的进行join(只是对于k v形式的数据可以使用),不一定会产生shuffle ,有可能发生shuffle,也有可能不发生 最后返回的结果是(Key,(rdd1的v,rdd2的v)),如下平行化创建,两个RDD,对其进行Join。这中情况下就不一定会产生shuffle