1. 程式人生 > >SparkSQL學習- SparkSQL編譯和執行過程

SparkSQL學習- SparkSQL編譯和執行過程

Unresolved Logical Plan

Spark使用Antlr將SQL/DataFrame 編譯為一顆Unresolved Logical Plan(抽象語法樹AST),樹上的節點不帶有資料型別等資訊。SparkSqlAstBuilder類與此相關。

Resolved Logical Plan

Spark從Catalog獲取表結構資訊,並填充AST得到Resolved Logical Plan,這個過程通常稱為Analysis。若表不存在之類錯誤,則返回錯誤。

Optimized Logical Plan

Spark進行一系列優化手段,例如謂詞下推(Predicate Pushdown),Constant Folding(1 + 1運算轉化為常量3),得到一個優化後的執行計劃。

Physical Plans

RBO此時其作用,應用這些規則(Rule)後,得到多個物理執行計劃。Spark再根據成本模型,選擇一個最優物理執行計劃。

Whole Stage CodeGen

將物理執行計劃翻譯為Java位元組碼。Spark 2.0引入該特性。