HIVE SQL优化

本文介绍了Hive SQL在普通场景和数据倾斜情况下的优化策略。包括列裁剪、分区裁剪、job优化、数据过滤、小表在前大表在后、mapjoin、left semi join、union all和multi-insert的合理使用、去重、排序优化等。同时,针对数据倾斜,提出了空值处理、不同类型关联、key数据过多的解决方案,并讨论了内存管理和GC问题。
摘要由CSDN通过智能技术生成

作为数据仓库的利器,大部分的数仓工作者大部分时间都在写Hive Sql,根据作者经验整理出单纯的Hive Sql调优。

一. 普通场景下的sql优化

1. 列裁剪

由于数仓底层存储大都采用列式存储,如ORC/PARQUET,所以可以采用列裁剪的方式减少扫描的字段。

2. 分区裁剪

即查询数据表时增加分区的条件,数仓通常是集团级的数据存储,数据量非常大,所以大多都采用分区,加速数据统计效率,所以分区裁剪必不可少。

3. 利用hive的优化机制减少job

不论是outer join还是inner join,如果join的key相同,不管有多少表都会合为一个Mapreduce。

4. job输入输出优化

善用multi-insert、union all,不同表的union all相当于multi-insert,相同表的union all则是map一次输出多条。

insert overwrite table tmp select from a where condition1;
insert overwrite table tmp select from a where condition2;

from a
insert overwrite table tmp select where condition1
insert overwrite table tmp select where condition2;

5. 数据过滤

在join之前过滤掉不需要的数据

select t1.dim1,t1.measure1,t
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值