hive sql 优化

sql代码细节优化:比如去重用group by替代distinct ;多表关联,先进行子查询后再进行关联;表关联时一定要在子查询里过滤掉NULL值,避免数据倾斜;不要对一个表进行重复处理,多使用临时表,尽量做到一次处理多次使用等等,

 

1、谓词下推

  基本策略是,始终将过滤表达式尽可能移至靠近数据源的位置。例如,将外层查询块的 WHERE 子句中的谓词移入所包含的较低层查询块(例如视图),从而能够提早进行数据过滤以及有可能更好地利用索引。对于大数据领域来说,谓词下推即:不影响结果的情况下,尽量将过滤条件提前执行。

  谓词下推在Hive中默认是开启的,也可以通过配置 SET hive.optimize.ppd=true; 显式开启。

  例如,对于如下SQL 

select a.*, b.* 
from a join b on (a.col1 = b.col1)
where a.col1 > 20 and b.col2 > 40

  如果开启了谓词下推,在join之前会先执行where语句中对两个表的过滤操作,从而减少读取和计算的数据量。否则,会先join再过滤。

 

 

参考链接:https://blog.csdn.net/weixin_31866177/article/details/116214927

posted @ 2023-03-18 11:38  Solong1989  阅读(111)  评论(0编辑  收藏  举报