Hive - 数据倾斜的原因以及解决办法(附样例)
创作时间:
作者:
@小白创作中心
Hive - 数据倾斜的原因以及解决办法(附样例)
引用
1
来源
1.
https://www.hangge.com/blog/cache/detail_3581.html
在大数据处理的过程中,Hive是一种常用的工具。然而,在处理大规模数据时,数据倾斜问题往往会导致查询性能下降,甚至查询失败。本文将介绍Hive数据倾斜的原因,并提供几种有效的解决方案。
一、数据倾斜原因分析
1. 可能会触发 Hive 数据倾斜的情况
关键字 | 情形 | 后果 |
|---|---|---|
join | 大表与小表,小表中的key集比较集中 | 分发到某一个或几个Reduce上的数据远高于平均值 |
join | 大表与大表,但是join中指定的字段0值或空值过多 | 这些空值都由一个reduce处理,非常慢 |
groupby | groupby维度过小,处理的数量过多 | 处理某值的reduce非常耗时 |
2. 造成数据倾斜的原因
(1)key分布不均匀
(2)业务数据本身的特性
(3)建表时考虑不周
(4)某些SQL语句本身就有数据倾斜
3. 数据倾斜的表现
(1)任务进度长时间维持在99%(或100%),查看任务监控页面,发现只有少量(1个或几个)reduce子任务未完成。因为其处理的数据量和其他reduce差异过大。
(2)单一reduce的记录数与平均记录数差异过大,通常可能达到3倍甚至更多。 最长时长远大于平均时长。
二、数据倾斜的解决方案
1. 调整 Hive 配置
(1)hive.map.aggr参数用于在Map阶段进行部分聚合,可以有效地减少需要传输到Reduce阶段的数据量,从而减轻Reduce阶段的负担。
SET hive.map.aggr=true;
(2)hive.groupby.skewindata参数参数设置为true时,Hive会在执行GroupBy操作时检测并处理数据倾斜。具体来说其生成的查询计划会有两个MRJob:
第一个MRJob中,Map的输出结果集合会随机分布到Reduce中,每个Reduce做部分聚合操作,并输出结果,这样处理的结果是相同的GroupByKey有可能被分发到不同的Reduce中,从而达到负载均衡的目的;
第二个MRJob再根据预处理的数据结果按照GroupByKey分布到Reduce中(这个过程可以保证相同的GroupByKey被分布到同一个Reduce中),最后完成最终的聚合操作。
SET hive.groupby.skewindata=true;
2. SQL 语句调节
(1)针对大小表Join:
- 使用mapjoin让小的维度表(1000条以下的记录条数) 先进内存,在map端完成join操作。正常情况下join是需要在reduce端执行的,通过mapjoin可以实现在map端执行join操作,这样可以避免在shuffle的时候造成数据倾斜。
(2)针对大表Join大表:
- 把空值的key变成一个字符串加上随机数,把倾斜的数据分到不同的reduce上,由于null值关联不上,处理后并不影响最终结果。
(3)优化GroupBy操作:
- 下面SQL其实是一个解决数据倾斜的SQL(添加随机数,两阶段聚合)。先看里面的select语句,里面的select语句其实是根据key进行分组,但是这个key对应的数据存在数据倾斜,key=KEY001的数据占了整份数据的90%,所以直接针对key进行分组肯定会出现数据倾斜,应该计算效率,所以在这里就实现了曲线救国,先把key=KEY001的数据打散,分成50份,进行局部聚合。最后再通过外面的select进行全局的聚合,这样就可以显著提高计算效率。
SELECT a.Key
, SUM(a.Cnt) AS Cnt
FROM (
SELECT Key
, COUNT(*) AS Cnt
FROM TableName
GROUP BY Key,
CASE
WHEN Key = 'KEY001' THEN Hash(Random()) % 50
ELSE 0
END
) a
GROUP BY a.Key;
热门推荐
明末浙党科普:从泛南直隶势力分裂而出,成东林党最大的反对派
2024年全球电影产业发展现状分析:票房收入恢复至疫情前80%水平
第10个国家中心城市,彻底没了?
英伟达概念下的工业富联,能华丽转身吗?
糖尿病患者需警惕,吸烟加剧健康风险!
郑州美食特产:从水煎包到鸡心枣,探寻地道中原味道
70年传奇,AR-15为何依然是枪械之王?模块化设计背后的秘密
八字命理中“水土交战”的具体影响及化解方法
历史战绩分析:揭秘俄罗斯与埃及两队之间的较量
绿发晶的功效与作用及真假鉴别方法
金融市场风险管理的主要方法有哪些?
缓解骨关节炎疼痛,该如何正确选用药物?
杭州八大服装批发市场全攻略:从四季青到龙翔服饰城
严重可致细菌感染 一文告诉你哪些痘痘不能乱挤
为什么总是波音?我们用两万多条数据发现了答案
深入理解MapReduce:从Map到Reduce的工作原理解析
有效降低甘油三酯水平的饮食、运动与生活方式调整建议
全球首个陆上商用模块式小型核反应堆“玲龙一号”系统设备进入安装高峰期
多少有氧运动才算过度?
"贫苦善良女孩"卖"原生态农产品"?——揭秘直播卖惨背后黑色链条
美国与中国贫困标准差异大到难以想象!
崩坏星穹铁道:缇宝角色攻略,技能机制与配队推荐详解
超详细!一步步教会你计算和应用底池赔率
中学体育融合德育教育:培养德才兼备的时代新人
如何分析国债与股市的相互作用
疏散出口、安全出口、疏散走道和疏散楼梯的净宽度要求是怎样的?
重磅!5A景区评定新标准正式发布!
江苏徐州:交通建设“加速跑”,枢纽能级“再跃升”
氨糖,关节健康新选择:解析氨糖软骨素钙片的功效和作用
手把手教你解锁完美咖啡豆冲煮体验