火花SQL是催化劑優化器的核心,它利用高級編程語言特性(例如Scala的模式匹配和準引號)小說的方式來構建一個可擴展的查詢優化器。Scala中的催化劑是基於函數式編程構造和設計這些關鍵的兩個目的:
- 輕鬆添加新的火花SQL優化技術和特性
- 使外部開發人員擴展優化器(例如添加數據源特定的規則,對新數據類型的支持,等等)。
催化劑包含一個通用庫代表樹木和應用規則來操縱它們。這個框架之上,圖書館具體關係查詢處理(例如,表達式,邏輯查詢計劃),和幾套規則處理查詢執行的不同階段:分析、邏輯優化,物理規劃和代碼生成查詢Java字節碼編譯的部分。對於後者,它使用另一個Scala特性,但是,這很容易生成代碼在運行時從可組合表達式。催化劑還提供了幾個公開擴展點,包括外部數據源和用戶定義的類型。催化劑,同時支持基於規則和基於成本的優化。