四个方面
1,从业务逻辑上处理,设计避免数据倾斜的问题,想办法把数据分配的更加均匀,分散一点。
比如 :统计商家容易数据倾斜,我可以统计不同种类商品,比如生鲜,母婴,因为我只是知道整个平台的销售情况,商家维度不好找,我换成商品维度去统计,也省了很多人力资源。
2,从技术方案解决
统计一年的数据搞不定,可以统计每个月,如果每个月的数据量不大,就不会产生数据倾斜问题。
3,以上都考虑过了,可以在细节问题解决,比如对数据预处理,过滤少数导致的key,使用随机前缀等等。
4,条件可以的话,可以从硬件上去解决,比如加机器,加内存等等,因为数据倾斜就是因为某些节点数据量太多,而计算资源又不够,要很长时间执行,进而拖慢了整个job的进度。给某个机器升级一下就好了。