我在研究催化劑優化器的各個階段,但我有些懷疑這三個第一階段在實踐中是如何工作的。催化劑優化階段
在第一階段(分析階段),otimizer將創建查詢的邏輯計劃。但是這裏的列沒有解決,所以它需要爲此使用一個目錄對象。
懷疑:你知道這個目錄對象是如何工作的嗎?例如,如果我們在hive表上執行查詢,優化器連接到hdfs中的hivetables來解析列?
在第二階段(邏輯優化),otimizer將標準規則應用於邏輯計劃,如常量摺疊,謂詞下推和項目修剪。
懷疑:我試着找例子來更好地理解什麼火花確實在這個階段,不斷摺疊,謂語pushsdown和項目修剪事情如何幫助優化查詢,但林沒有找到關於這個沒什麼混凝土。
在第三階段(物理計劃),spark使用符合Spark執行引擎的物理操作符來計算邏輯計劃並生成一個或多個物理計劃。
懷疑:您是否理解這部分內容「使用與火花執行引擎匹配的物理操作符」?
謝謝你的回答。我只是懷疑謂詞下推,所以它似乎有助於減少整個網絡的數據量。所以這只是關於使用where子句,所以我們可以過濾結果,因此整個網絡的數據傳輸量更少? – codin
我會說在一般情況下減少IO。 – zero323