当前位置:   article > 正文

Spark内核原理groupByKey、reduceByKey算子内部实现原理_请列举spark的groupbykey算子底层实现

请列举spark的groupbykey算子底层实现

一般来说,在执行shuffle类的算子的时候,比如groupByKey、reduceByKey、join等。
其实算子内部都会隐式地创建几个RDD出来。那些隐式创建的RDD,主要是作为这个操作的一些中间数据的表达,以及作为stage划分的边界。
因为有些隐式生成的RDD,可能是ShuffledRDD,dependency就是ShuffleDependency,DAGScheduler的源码,就会将这个RDD作为新的stage的第一个rdd,划分出来。
reduceByKey
reduceByKey,跟groupByKey有一些异同之处

groupByKey
groupByKey等shuffle算子,都会创建一些隐式RDD。比如说这里,ShuffledRDD,作为一个shuffle过程中的中间数据的代表。
依赖这个ShuffledRDD创建出来一个新的stage(stage1)。ShuffledRDD会去触发shuffle read操作。从上游stage的task所在节点,拉取过来相同的key,做进一步的聚合。
对ShuffledRDD中的数据执行一个map类的操作,主要是对每个partition中的数据,都进行一个映射和聚合。这里主要是将每个key对应的数据都聚合到一个Iterator集合中。

不同之处:reduceByKey,多了一个rdd,MapPartitionsRDD,存在于stage0的,主要是代表了进行本地数据归约之后的rdd。所以,要网络传输的数据量,以及磁盘IO等,会减少,性能更高。
相同之处:后面进行shuffle read和聚合的过程基本和groupByKey类似。都是ShuffledRDD,去做shuffle read。然后聚合,聚合后的数据就是最终的rdd。wordCounts rdd。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/588904
推荐阅读
相关标签
  

闽ICP备14008679号