1. 程式人生 > >學習筆記 --- Spark SparkSQL下Parquet中PushDown的實現

學習筆記 --- Spark SparkSQL下Parquet中PushDown的實現

PushDown是一種SQL優化方式,通常用在查詢。應用場景:

假設通過DataFrame,df.select(a,b,c).filter(by a).filter(by b).select(c).filter(by c)這樣的查詢,在optimizer階段,需要合併多個filters(CombineFilters),並調整運算元間的順序,例如將部分filter移到select等前面(PushPredicateThroughAggregate/Generate/Join/Project)。filter前需要操作一大批資料,但filter後只需要操作很小一部分資料,SQL優化時就希望一開始就只操作這一小部分資料,而不需要把所有資料都匯入進來,因為最終還是要被過濾掉。

PushDown本身既有SQL語法的層面也有物理執行的層面。

PushDown是要把操作放到葉子節點上。這也是為什麼叫謂詞下推(Predicate pushdown)的原因。當把操作放到葉子節點時就導致操作在資料來源上執行。

參考:

https://blog.csdn.net/full_stack_delp/article/details/72972934