首页 > 代码库 > Hive_数据倾斜处理
Hive_数据倾斜处理
数据倾斜
使用join(map join/reduce join/group by等)聚合数据时,某一个特殊的key (空值/特殊值)匹配到的记录过多而导致记录被分发到reduce的记录远大于平均值(总记录数平均配配到 各个reduce的值),这样在运行时reduce时某一reduce负载过大而导致运行效率远大于平均任务时常
操作导致
map join 其中一个表相对较小,但是key集中 分配到某一个或几个reduce上的数据远高于平均值 reduce join 两个比较大的表使用分桶操作中,字段0或空值过多 这些空值都有一个reduce处理 group by group by 维度过小,某值数量过多 处理某值的reduce非常耗时 count distinct 某特殊值过多 处理特殊值的reduce非常耗时
原因
1. key 值分配不均匀(业务数据本身问题) 2. 建表时考虑不周 3. 编写sql语句时使用某些聚合函数导致
表现
在运行HIVE任务时,发现少量reduce子任务迟迟未完成,原因就是数据分布,导致reduce负载不均衡
解决方案
参数调节 1. hive.map.aggr=true(提前对map部分聚合,相当于Conmbiner) 2.hive,groupby.skewindata=http://www.mamicode.com/true>
转自: http://www.cnblogs.com/ggjucheng/archive/2013/01/03/2842860.html
Hive_数据倾斜处理
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。