hive中数据倾斜

Posted WaveVector

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hive中数据倾斜相关的知识,希望对你有一定的参考价值。

 

hive数据倾斜的简单处理

? 数据倾斜症状:
任务长时间维持在99%(或100%);
查看任务监控页面,发现只有少量(1个或几个)reduce子任务未完成;
本地读写数据量很大。
? 原因:
key分布不均匀;
业务数据本身特点。
? 导致数据倾斜的操作:
GROUP BY, COUNT DISTINCT(),join

这里列出几个常用解决办法:

参数hive.groupby.skewindata = true
似乎是解决数据倾斜的万能钥匙,查询计划会有两个 MR Job,第一个 MR Job 中,Map 的输出结果集合会随机分布到 Reduce 中,每个Reduce做部分聚合操作,并输出结果,这样处理的结果是相同的 Group By Key 有可能被分发到不同的 Reduce中,从而达到负载均衡的目的;第二个 MR Job 再根据预处理的数据结果按照 Group By Key 分布到 Reduce中(这个过程可以保证相同的 Group By Key 被分布到同一个 Reduce 中),最后完成最终的聚合操作。

使用COUNT DISTINCT造成的数据倾斜

如果某一个值的记录特别多,可以先把该值过滤掉,在最后单独处理。比如某一天的IMEI值为’lxw1234’的特别多,当我要统计总的IMEI数,可以先统计不为’lxw1234’的,之后再加1。

?

(c)2006-2024 SYSTEM All Rights Reserved IT常识