Hive数据倾斜优化和分区

二、Hive数据倾斜问题优化

1.现象

当Hive放生数据倾斜的时候,我们在使用HQL运行mr的时候可以发现,mapreduce卡在99%

2.当Hive发生数据倾斜的时候我应该怎么办呢?

第一种方案,数据倾斜五分就是key的数据量非常不均匀,我们可以开启map聚合的参数(hive.map.aggr=ture),开启之后会把数据现在map端进行聚合,当reduce端聚合的时候就只需要聚合map端聚合完的参数就可以了

第二种是当大表和小表进行JOIN的时候,也可能导致数据倾斜。为了解决这个问题,考虑使用到mapjoin,mapjoin会把小表全部读入内存中,在map阶段直接拿另外一个表的数据和在内存中表的数据进行匹配,由于mapjion是在map端进行了join操作,省去了reduce的运行,所以效率会快很多

第三种是当大表和大表join的时候发生数据倾斜,具体操作室建立一个numbers表,其值只有一列int 行,比如从1到10(具体值可根据倾斜程度确定),然后放大B表10倍,再取模join

 

三、分区

1.Hive静态分区

就是在不开启动态分区的条件下都是静态分区,使用方式就是HQL

 

  1. Hive动态分区

1)参数设置

· 开启动态分区

 

启用动态分区功能    

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值