天天看點

Spark SQL 查詢引擎Catalyst分析

Spark SQL 查詢引擎Catalyst分析

    • Catalyst整體架構圖
    • Catalyst執行流程

Catalyst整體架構圖

Spark SQL 查詢引擎Catalyst分析

Catalyst執行流程

catalyst是spark sql的排程核心,遵循傳統資料庫查詢解析步驟,對sql進行解析,轉換為邏輯查詢計劃,實體查詢計劃,最終轉化為Spark的DAG後在執行,下圖為Catalyst的執行流程。

Spark SQL 查詢引擎Catalyst分析
  • SqlParser将SQL語句被解析為文法樹(AST),也就是未解析的邏輯查詢計劃。Parser簡單來說是将SQL字元串切分成一個一個Token,再根據一定語義規則解析為一棵文法樹。(ANTLR實作)
  • Analyzer對邏輯查詢計劃進行屬性和關系關聯檢驗,也就是通過定義的一系列規則将未解析的邏輯查詢計劃借助catalog去解析,如将之前提到的未解析的邏輯查詢計劃轉換成邏輯查詢計劃。(再次周遊整個文法樹,對樹上的每個節點進行資料類型綁定以及函數綁定)
  • Optimizer通過邏輯查詢優化将邏輯查詢計劃轉化為優化的邏輯查詢計劃,優化器是整個Catalyst的核心。下面一篇文章會詳細介紹。包括謂詞下推(Predicate Pushdown)、常量累加(Constant Folding)和列值裁剪(Column Pruning)。
  • QueryPlanner将邏輯查詢計劃轉換為實體查詢計劃
  • prepareForExecution調整資料分布,最後将實體查詢計劃轉換為執行計劃進入Spark執行任務

繼續閱讀