dag任務劃分
rdds 通過操作運算元進行轉換,轉換得到的新 rdd 包含了從其他 rdds 衍生所必需的資訊,rdds 之間維護著這種血緣關係,也稱之為依賴。依賴包括兩種,一種是窄依賴,rdds 之間分割槽是一一對應的,另一種是寬依賴,下游 rdd 的每個分割槽與上游rdd(也稱之為父 rdd)的每個分割槽都有關,是多對多的關係。
rdd 只支援粗粒度轉換,即在大量記錄上執行的單個操作。將建立 rdd 的一系列
lineage(血統)記錄下來,以便恢復丟失的分割槽。 rdd 的 lineage 會記錄 rdd 的元資料資訊和轉換行為,當該 rdd 的部分分割槽資料丟失時,它可以根據這些資訊來重新運算和恢復丟失的資料分割槽。
乙個父rdd的partition只能被子rdd的partition使用一次
類似於獨生子女。
一父對一子,屬於窄依賴;多父對一子,也屬於窄依賴;
多父對一子,屬於寬依賴;多父對多子,也屬於寬依賴。
所以join操作不一定是寬依賴,亦可以是窄依賴
乙個父rdd的partition被子rdd的partition使用不止一次
類似於超生
資料丟失時:窄依賴:在資料丟失時,只需要修復與丟失資料的分割槽有血緣的父rdd的分割槽,這種情況,問題不大;寬依賴:乙個分割槽丟了,之前的所有分割槽都需要重新計算;
落盤與否:窄依賴會直接以pipeline走到乙個stage的底,乙個pipeiline的資料是不會落盤的;而寬依賴屬於shuffle運算元,是會落到磁碟的;
dag(directed acyclic graph)叫做有向無環圖,原始的 rdd 通過一系列的轉換就就形成了 dag,根據 rdd 之間的依賴關係的不同將 dag 劃分成不同的 stage,對於窄依賴, partition 的轉換處理在 stage 中完成計算。對於寬依賴,由於有 shuffle 的存在,只能在 parent rdd 處理完成後,才能開始接下來的計算,因此寬依賴是劃分 stage 的依據。
job:乙個 action 運算元就會生成乙個 job
stage: 根據 rdd 之間的依賴關係的不同將 job 劃分成不同的 stage, 遇到乙個寬依賴則劃分乙個 stage。
task: stage 是乙個taskset,將 stage 劃分的結果傳送到不同的 executor 執行即為乙個task。
spark學習筆記 RDD的依賴關係
1.rdd的依賴關係 1.1 rdd的依賴 rdd和它依賴的父rdd的關係有兩種不同的型別,即窄依賴 narrow dependency 和寬依賴 wide dependency 1.2 窄依賴 窄依賴指的是每乙個父rdd的partition最多被子rdd的乙個partition使用 總結 窄依賴我...
RDD的依賴關係和Spark任務中的Stage
rdd和它依賴的父rdd s 的關係有兩種不同的型別,即窄依賴 narrow dependency 和寬依賴 wide dependency 總結 窄依賴我們形象的比喻為獨生子女 總結 窄依賴我們形象的比喻為超生 dag directed acyclic graph 叫做有向無環圖,原始的 rdd通...
RDD中的依賴關係
1.有shuffle 2.父rdd的乙個分割槽會被子rdd的多個分割槽所依賴 父一對多 1.沒有shuffle 2.父rdd的乙個分割槽只會被子rdd的1個分割槽所依賴 一對一 窄依賴 spark可以對窄依賴進行優化 合併操作,形成pipeline 管道 同乙個管道中的各個操作可以由同乙個執行緒執行...