聊聊謂詞下推的事


對於數倉開發來說,寫好一條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的,則不會下推。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM