hive解决数据倾斜问题_Hive数据倾斜和解决办法

转自:https://blog.csdn.net/xinzhi8/article/details/71455883

操作:

关键词

情形

后果

Join

其中一个表较小,但是key集中

分发到某一个或几个Reduce 上的数据远高于平均值

大表与大表,但是分桶的判断字段0值或空值过多

这些空值都由一个reduce处理非常慢

group by

group by 维度过小,某值的数量过多

处理某值的reduce非常耗时

Count Distinct

某特殊值过多

处理此特殊值的reduce耗时

原因:

1)、key分布不均匀

2)、业务数据本身的特性

3)、建表时考虑不周

4)、某些SQL语句本身就有数据倾斜

解决方案

1.参数调节:

hive.map.aggr = true

Map 端部分聚合,相当于Combiner

hive.groupby.skewindata=true(万能药膏)

有数据倾斜的时候进行负载均衡,当选项设定为 true,生成的查询计划会有两个 MR Job。第一个 MR Job 中,Map 的输出结果集合会随机分布到 Reduce 中,每个 Reduce 做部分聚合操作,

并输出结果,这样处理的结果是相同的 Group By Key 有可能被分发到不同的 Reduce 中,从而达到负载均衡的目的;第二个 MR Job 再根据预处理的数据结果按照 Group By Ke

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一些解决Hive数据倾斜的案例: 1. 采用随机数打散:在某个客户的Hive作业,某个reduce任务的数据量过大,导致该任务的执行时间远远大于其他任务。为了解决这个问题,我们采用了随机数打散的方式,将该任务的数据随机分散到多个reduce任务,从而减轻某个reduce任务的压力,提高整个作业的执行效率。 2. 增加reduce任务数:在某个客户的Hive作业,某个reduce任务的数据量过大,导致该任务的执行时间远远大于其他任务。为了解决这个问题,我们增加了reduce任务数,将数据分摊到更多的reduce任务,从而减轻某个reduce任务的压力,提高整个作业的执行效率。 3. 采用动态分区:在某个客户的Hive作业,某个字段值分布不均,导致某些分区的数据量过大,从而影响整个作业的执行效率。为了解决这个问题,我们采用了动态分区的方式,将数据均匀地分布到多个分区,从而避免某些分区数据过大的问题,提高整个作业的执行效率。 4. 压缩数据:在某个客户的Hive作业,某个字段值分布不均,导致某些分区的数据量过大,从而影响整个作业的执行效率。为了解决这个问题,我们采用了数据压缩的方式,将数据压缩后再进行处理,从而减少数据传输和处理的时间,提高整个作业的执行效率。 以上是一些解决Hive数据倾斜的案例,希望这些案例可以帮助你更好地理解和解决Hive数据倾斜问题

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值