HQL优化

本文分享了提升SQL性能的五个关键原则,包括尽早过滤数据、避免在on条件中使用函数、减少where条件、避免group by函数处理及避免重复计算等。同时,文章还强调了在写SQL前理解数据特点的重要性,并提供了处理数据倾斜的策略。

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

基本原则:

1:尽量尽早地过滤数据,减少每个阶段的数据量,对于分区表要加分区,同时只选择需要使用到的字段

2. on 条件字段尽量不要使用函数处理

3. on 条件后面尽量不用或者少用where

4. group by的字段不要使用函数处理

5. 尽量避免重复计算,相同计算逻辑的sql片段考虑建临时表复用
 

 

=============

5:写SQL要先了解数据本身的特点,如果有join ,group操作的话,要注意是否会有数据倾斜

如果出现数据倾斜,应当做如下处理:

set hive.exec.reducers.max=200;

set mapred.reduce.tasks= 200;---增大Reduce个数

set hive.groupby.mapaggr.checkinterval=100000 ;--这个是group的键对应的记录条数超过这个值则会进行分拆,值根据具体数据量设置

set hive.groupby.skewindata=true; --如果是group by过程出现倾斜 应该设置为true

set hive.skewjoin.key=100000; --这个是join的键对应的记录条数超过这个值则会进行分拆,值根据具体数据量设置

set hive.optimize.skewjoin=true;--如果是join 过程出现倾斜 应该设置为true
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值