SparkSQL底層執行的原理詳解 面試必備

2021-10-18 00:00:35 字數 1900 閱讀 5782

檢視執行計畫----------------------explain

簡介:spark sql的核心是catalyst優化器,它以一種新穎的方式利用高階程式語言功能(例如scala的模式匹配和quasiquotes)來構建可擴充套件的查詢優化器

sparksql的catalyst優化器是整個sparksql pipeline的中間核心部分,其執行策略主要兩方向:

基於規則優化/rule based optimizer/rbo

基於代價優化/cost based optimizer/cbo

為了解決過多的依賴hive的問題,sparksql引入了乙個優化器 catalyst, 整個 sparksql 的架構大致如下:

1.api 層簡單的說就是 spark 會通過一些 api 接受 sql 語句

2.收到 sql 語句以後, 將其交給 catalyst, catalyst 負責解析 sql, 生成執行計畫等

3.catalyst 的輸出應該是 rdd 的執行計畫

4.最終交由集群執行

具體流程:

step 1 : 解析 sql, 並且生成 ast (抽象語法樹)

step 2 : 在 ast 中加入元資料資訊, 做這一步主要是為了一些優化, 例如 col = col 這樣的條件, 下圖是乙個簡略圖, 便於理解

step 3 : 對已經加入元資料的 ast, 輸入優化器, 進行優化, 從兩種常見的優化開始, 簡單介紹:

step 4 : 上面的過程生成的 ast 其實最終還沒辦法直接執行, 這個 ast 叫做 邏輯計畫, 結束後, 需要生成 物理計畫, 從而生成 rdd 來執行

在生成物理計畫的時候, 會經過成本模型對整棵樹再次執行優化, 選擇乙個更好的計畫

在生成物理計畫以後, 因為考慮到效能, 所以會使用**生成, 在機器中執行

可以使用queryexecution 方法檢視邏輯執行計畫, 使用explain 方法檢視物理執行計畫

也可以使用 spark webui 進行檢視

總結:

catalyst 的主要運作原理是分為三步,先對 sql 或者 dataset 的**解析, 生成邏輯計畫, 後對邏輯計畫進行優化, 再生成物理計畫, 最後生成**到集群中以 rdd 的形式執行

Spark SQL執行原理和架構

一 spark sql執行架構 spark sql對sql語句的處理和關係型資料庫類似,即詞法 語法解析 繫結 優化 執行。spark sql會先將sql語句解析成一棵樹,然後使用規則 rule 對tree進行繫結 優化等處理過程。spark sql由core catalyst hive hive ...

Switch底層執行原理

s witch語句根據乙個整數索引值進行多重分支,底層採用跳轉表這種資料結構。跳轉表是乙個陣列,表項i對應 段的位址,當switch索引值等於表項i時採取對應的程式操作。簡單可理解為 執行 switch時生成乙個長度為最大case常量 1的陣列,程式首先判斷switch變數是否大於最大case 常量...

spark基礎之spark sql執行原理和架構

一 spark sql執行架構 spark sql對sql語句的處理和關係型資料庫類似,即詞法 語法解析 繫結 優化 執行。spark sql會先將sql語句解析成一棵樹,然後使用規則 rule 對tree進行繫結 優化等處理過程。spark sql由core catalyst hive hive ...