教育行業(yè)A股IPO第一股(股票代碼 003032)

全國咨詢/投訴熱線:400-618-4000

DAG是什么?DAG有向無環(huán)圖實例講解

更新時間:2020年12月29日17時08分 來源:傳智教育 瀏覽次數(shù):

好口碑IT培訓

  DAG(Directed Acyclic Graph)叫做有向無環(huán)圖,Spark中的RDD通過一系列的轉換算子操作和行動算子操作形成了一個DAG。DAG是一種非常重要的圖論數(shù)據(jù)結構。如果一個有向圖無法從任意頂點出發(fā)經(jīng)過若干條邊回到該點,則這個圖就是有向無環(huán)圖,具體如圖1所示。

圖1 DAG有向無環(huán)圖

  從圖1可以看出,4→6→1→2是一條路徑,4→6→5也是一條路徑,并且圖中不存在從頂點經(jīng)過若干條邊后能回到該點。在Spark中,有向無環(huán)圖的連貫關系被用來表達RDD之間的依賴關系。其中,頂點表示RDD及產(chǎn)生該RDD的操作算子,有方向的邊表示算子之間的相互轉化。

  根據(jù)RDD之間依賴關系的不同可以將DAG劃分成不同的Stage(調(diào)度階段)。對于窄依賴來說,RDD分區(qū)的轉換處理是在一個線程里完成,所以窄依賴會被Spark劃分到同一個Stage中;而對于寬依賴來說,由于有Shuffle的存在,所以只能在父RDD處理完成后,下一個Stage才能開始接下來的計算,因此寬依賴是劃分Stage的依據(jù),當RDD進行轉換操作,遇到寬依賴類型的轉換操作時,就劃為一個Stage。Stage的具體劃分如圖2所示。

圖2 Stage的劃分

  在圖2中,創(chuàng)建了三個RDD的實例A、C以及E。當RDD的實例A做groupByKey轉換操作生成B時,由于groupByKey轉換操作屬于寬依賴類型,所以就把實例A劃分為一個Stage,如Stage1;當實例C做map轉換操作生成D, D與實例E做union轉換操作生成F,由于map和union轉換操作都屬于窄依賴類型,因此不進行Stage的劃分,而是將C、D、E、F加入到同一個Stage中;當F與B進行join轉換操作時,由于這時的join操作是非協(xié)同劃分,所以屬于寬依賴,因此會劃分為一個Stage,如Stage2;剩下的B和G被劃分為一個Stage,如Stage3。




猜你喜歡:

win10下載安裝Scala及環(huán)境變量配置教程

spark筆記之RDD容錯機制之checkpoint

RDD是如何操作數(shù)據(jù)轉換的?

傳智教育python+大數(shù)據(jù)培訓課程

0 分享到:
和我們在線交談!