Hive调优

本文介绍了Hive的优化技巧,包括Fetch抓取优化、表的优化(Join、Group By、Count(distinct)等)、数据倾斜处理、使用EXPLAIN分析执行计划、并行执行、严格模式、JVM重用和推测执行等,旨在提升Hive查询效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 Fetch抓取(Hive可以避免进行MapReduce)

1.1 hive.fetch.task.conversion设置成more

        把hive.fetch.task.conversion设置成more,然后执行查询语句,在全局查找、字段查找、limit查找等都不走mapreduce。

set hive.fetch.task.conversion=more;

1.2 本地模式

        当Hive的输入数据量非常小时,为避免出现配置maptask比数据运行时间还长,可以通过设置hive.exec.mode.local.auto的值为true,来让Hive在适当的时候自动启动这个优化。

set hive.exec.mode.local.auto=true;  //开启本地mr
//设置local mr的最大输入数据量,当输入数据量小于这个值时采用local  mr的方式,默认为134217728,即128M
set hive.exec.mode.local.auto.inputbytes.max=51234560;
//设置local mr的最大输入文件个数,当输入文件个数小于这个值时采用local mr的方式,默认为4
set hive.exec.mode.local.auto.input.files.max=10;

2  表的优化

2.1 Join

Join原则:

1)小表Join大表

2)多个表关联时,最好分拆成小段,避免大sql(无法控制中间Job)

3)大表Join大表

  • (1)空key过滤

        即进行join连接时,先将字段为null的值过滤出去再进行join连接,避免出现大量相同key发送到同一个reducetask的情况

(2)空key转换

        原因同上,有时虽然某个key为空对应的数据很多,但是相应的数据不是异常数据,必须要包含在join的结果中,此时我们可以表a中key为空的字段赋一个随机的值,可以为nul

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值