從技術角度,越底層和硬件偶爾越高,可動彈的空間越小,而越高層,可動用的智慧是更多。Catalyst就是個高層的智慧。sql
Catalyst已經逐漸變成了全部Spark框架的解析優化引擎,RDD是通用抽象的數據結果,RDD+Catalyst就構成了Spark的新底層。Catalyst是在RDD基礎上進行封裝,一旦優化了Catalyst,全部的子框架就都獲得了優化。框架
在昨天,咱們已經看到SparkPlan會經過prepareForExecution最終完成轉換RDD的操做。大數據
其實際觸發須要一個action級別的操做,讓咱們看一下collect這個action方法。
其執行會分爲幾步:優化
在外面調用了conveter方法。spa
其核心就是把catalyst的類型變成Scala的類型,從而完成了數據的輸出。ip
至此,咱們已通過濾了數據從SQL輸入到數據輸出的完整過程。spark
語句流程:
SQL語句 --> 調用sqlparse --> unresolved logical plan
--> 調用analyzer --> resovled logical plan
--> 調用optimizer --> optimized logical plan
--> 調用sparkPlanner --> sparkPlan
--> 調用prepareForExecution --> prepared sparkplanio
執行流程:
sparkplan --> 調用execute --> RDD
--> 調用converter --> Scala數據基礎
DT大數據天天晚上20:00YY頻道現場授課頻道68917580硬件