聊聊谓词下推的事

对于数仓开发来说,写好一条SQL,需要熟读Hive 源码。hive 默认的优化器有10种,其中这三种比较关键:

FilterPPD 会把可以下推的谓词抽取出来,存入OpWalkerInfo.opToPushdownPredMap.pushdownPreds 中

JoinPPD 的主要作用就是把能够下推的谓词和不能够下推的谓词分开,将不能够下推的谓词重新生成FilterOperator –> FIL[8]

TableScanPPD 将能够下推的谓词生成FIL[9] 并置于TS[0]之后

CDH6.2.1- hive 2.1.1 中谓词下推主要体现在两个方面:

 (1)优化逻辑执行计划

 (2)set  hive.cbo.enable=true

 inner join  谓词中  和  谓词后 的 优化结果是一样的,无论开启还是关闭CBO,hive 本身都已经做了 逻辑执行计划的优化工作;

Join(只包括left join ,right join,full join)中的谓词如果是保留表的,则不会下推;

Join(只包括left join ,right join,full join)之后的谓词如果是Null Supplying tables的,则不会下推。

原文地址:https://www.cnblogs.com/guodong1789/p/12808116.html