数据倾斜通用处理方式

使用“二次聚合”的思想

1.离线数据

Hive 、MR、 SPARK

1.1 场景描述

以MR为例,目前有p1 和 p2 两个分区, p1分区内有1亿条数据,key值为a ,p2分区内有一万条数据,key值为b

1.2 解决思路

以SQL为例
 首先,为key加上随机数,进行一次分区,
 (
 select 
 聚合函数,如count*
 from 
 group by key+随机数
 ) t1
 然后在上面SQL的基础上进行二次分区
 select 
    聚合函数
 from t1
 group by key去掉随机数

2.实时数据

使用Flink直接调用rebalance()算子或rescale()算子
rebalance算子会将各个分区内的数据打散再分区,rescale算子功能和rebalance算子相同,但效率更高

上一篇:Win10安装.net2.0/3.0


下一篇:WPF MVVM 关闭当前窗体 打开新的窗体