数据倾斜
数据倾斜概念
在做计算的时候,数据的分散度不够(数据的Key分布不均),导致数据分布在一台或几台机器计算
症状:典型的现象就是数据reduce到99%很久不动了
数据倾斜原因
总原因:key分布不均
业务数据的特点(数据的幂律分布)
人为建表的疏忽
join、group by、count distinct等操作触发shuffle操作
一些数据倾斜解决方法
将数据均匀分配到各个reduce中是解决数据倾斜的根本所在
业务逻辑
根据业务特点,单独对特别的业务数据进行聚合
程序
count distinct操作,先转成group by,再count
left semi join使用
设置参数
hive.map.aggr = true
hive.groupby.skewindata=true
总结
如果玩大数据数据倾斜是绕不过去的一个东西,解决数据倾斜问题是大数据查询优化的一种方法
数据倾斜是key分布不均导致
把数据均匀分布到各个reduce是解决数据倾斜的根本所在
没有一劳永逸的方法,具体问题具体分析,并且需要不断调试
参考资料
漫谈千亿级数据优化实践:数据倾斜
hive大数据倾斜总结
006.hive语句优化
Hive优化总结
Changelog
181205创建