Catalyst揭祕 Day7 SQL轉爲RDD的具體實現

Catalyst揭祕 Day7

SQL轉爲RDD的具體實現

從技術角度,越底層和硬件偶爾越高,可動彈的空間越小,而越高層,可動用的智慧是更多。Catalyst就是個高層的智慧。sql

Catalyst已經逐漸變成了全部Spark框架的解析優化引擎,RDD是通用抽象的數據結果,RDD+Catalyst就構成了Spark的新底層。Catalyst是在RDD基礎上進行封裝,一旦優化了Catalyst,全部的子框架就都獲得了優化。框架

執行過程

在昨天,咱們已經看到SparkPlan會經過prepareForExecution最終完成轉換RDD的操做。
Snip20160728_9大數據

其實際觸發須要一個action級別的操做,讓咱們看一下collect這個action方法。
Snip20160728_18
其執行會分爲幾步:優化

  • 調用execute方法,返回RDD,會執行具體的doPrepare和doExecute。

Snip20160728_15

  • 這裏咱們能夠很是簡單的看到一個真相,作了一個collect操做,這是RDD的方法

Snip20160728_16

  • 在外面調用了conveter方法。
    Snip20160728_17spa

  • 其核心就是把catalyst的類型變成Scala的類型,從而完成了數據的輸出。
    Snip20160728_12ip

小結

至此,咱們已通過濾了數據從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硬件

相關文章
相關標籤/搜索