Hive优化(提高hive运行速度)

一、Hive使用本地模式执行操作(Hive使用资源大于20M的时候还是会采用集群yarn的方式运行)

将hive的job交给yarn执行太慢,hive支持本地模式
設置本地模式之前的,耗時 9.068
在这里插入图片描述
設置本地模式之后的,耗時 0.29在这里插入图片描述

具体设置方法

1.1、设置临时的

在每次执行hql语句之前 都要先执行下面这句话

 set hive.exec.mode.local.auto=true;

1.2、修改hive配置文件(hive-site.xml),永久有效

<property>
    <name>hive.exec.mode.local.auto</name>
    <value>true</value>
</property>

注意 今天发现这种设置永久有效的方式,不够灵活,如果后期查询语句需要占用内存过大的时候 极 容易报错,所以,我就又在 hive-site.xml 中把这几行 注释了。每次都用临时,就比较灵活了。

二、盡量多使用group by 來去重

2.1、问题:Ggroup by非常容易造成数据倾斜 将Map阶段同一Key数据分发给一个reduce,

当一个key数据过大时就倾斜了。

2.2、解决方法:

开启map端聚合 相当于combiner

2.2.1、是否在Map端进行聚合,默认为True

set hive.map.aggr = true(默认已经是true)

2.2.2、有数据倾斜的时候进行负载均衡(默认是false)

set hive.groupby.skewindata = true

2.2.3、这样解决的原因

生成两个mr job,第一个mr 把相同的key 分发到不同的reduce做一个聚合 从而达到负载均衡的目的
第二个mr 将相同的key分发到一个reduce中,最后完成最终的聚合操作。

三、大小表 join的时候 把小表放在左边,这样就会把小表放到内存中 进行 map端join 较少了数据倾斜和提高运行效率

但是在新版本中 hive已经做了优化 小表坊左边和右

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值