202108051212 - spark两阶段聚合
这个方案的核心实现思路就是进行两阶段聚合。
第一次是局部聚合,先给每个key都打上一个随机数,比如10以内的随机数,此时原先一样的key就变成不一样的了,比如(hello, 1) (hello, 1) (hello, 1) (hello, 1),就会变成(1_hello, 1) (1_hello, 1) (2_hello, 1) (2_hello, 1)。接着对打上随机数后的数据,执行reduceByKey等聚合操作,进行局部聚合,那么局部聚合结果,就会变成了(1_hello, 2) (2_hello, 2)。
然后将各个key的前缀给去掉,就会变成(hello,2)(hello,2),再次进行全局聚合操作,就可以得到最终结果了,比如(hello, 4)。
https://blog.csdn.net/u010711495/article/details/113440127
https://tech.meituan.com/2016/05/12/spark-tuning-pro.html
spark groupByKey

浙公网安备 33010602011771号