Hive调优

本文介绍了Hive的调优方法,包括使用explain分析SQL执行逻辑,join操作优化,limit语句的调整,启用本地模式和并行执行,设置mapper和reducer数量,启用JVM重用,解决数据倾斜问题,利用索引和分区优化,以及减少job数量来提升查询效率。

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

1、使用explain 和 explain extended对sql语句进行执行逻辑进行查看,为后续优化做思路支持。

explain select * from text1;
explain extended select * from text1;

2、join

hive的查询永远是小表(结果集)驱动大表(结果集)
hive中的on的条件只能是等值连接
注意hive是否配置普通join转换成map端join、以及mapjoin小表文件大小的阀值

3、 limit的优化

hive.limit.row.max.size=100000
hive.limit.optimize.limit.file=10
hive.limit.optimize.enable=false (如果limit较多时建议开启)
hive.limit.optimize.fetch.max=50000

4、本地模式:

hive.exec.mode.local.auto=false (建议打开)
hive.exec.mode.local.auto.inputbytes.max=134217728
hive.exec.mode.local.auto.input.files.max=4

5、并行执行:

hive.exec.parallel=false (建议开启)
hive.exec.parallel.thread.number=8

6、 mapper和reducer的个数:

不是mapper和redcuer个数越多越好,也不是越少越好。
将小文件合并处理(将输入类设置为:CombineTextInputFormat) 通过配置将小文件合并:
mapred.max.split.size=256000000
mapred.min.split.size.per.node=1
mapred.min.split.size.per.rack=1
hive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat
set mapreduce.job.reduces=10
hive.exec.reducers.max=1009

7、配置jvm重用:

set mapreduce.job.jvm.numtasks=1
set mapred.job.reuse.jvm.num.tasks=1

8、数据倾斜:

数据倾斜:由于key分布不均匀造成的数据向一个方向偏离的现象。
本身数据就倾斜
join语句容易造成
count(distinct col) 很容易造成倾斜
group by 也可能会造成
找到造成数据倾斜的key,然后再通过hql语句避免。
hive.map.aggr=true
hive.groupby.skewindata=false (建议开启)
hive.optimize.skewjoin=false

9、索引是一种hive的优化

SET hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat;
SET hive.optimize.index.filter=true;
SET hive.optimize.index.filter.compact.minsize=0;

10、 分区本身就是hive的一种优化
11、job的数量:

一般是一个查询产生一个job,然后通常情况一个job、可以是一个子查询、一个join、一个group by 、一
个limit等一些操作。

```**![在这里插入图片描述](https://img-blog.csdnimg.cn/021bb8661e16404eb922375c2cfaae80.jpeg#pic_center)
**

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值