Spark學習 窄依賴和寬依賴的概念

2021-08-16 03:23:09 字數 617 閱讀 5311

窄依賴:narrow dependency,父rdd和子rdd的partition之間的對應關係是一對一的。rdd的每個partition,僅僅依賴父rdd中的乙個partition。

寬依賴:shuffle dependency,每乙個父rdd的partition中的資料,都可能會傳輸一部分到下乙個rdd的每個partition中。他們之間發生的操作就是shuffle。

二者的特性主要基於以下兩點:

寬依賴的shuffle操作,需要在執行過程中將同乙個父rdd的分割槽傳入到不同的子rdd分割槽中,中間可能涉及多個節點之間的資料傳輸;而窄依賴的每個父rdd的分割槽只會傳入到乙個子rdd分割槽中,通常可以在乙個節點內完成轉換。

當rdd分割槽丟失時(某個節點故障),spark會對資料進行重算。

對於窄依賴,由於父rdd的乙個分割槽只對應乙個子rdd分割槽,這樣只需要重算和子rdd分割槽對應的父rdd分割槽即可,所以這個重算對資料的利用率是100%的;

對於寬依賴,重算的父rdd分割槽對應多個子rdd分割槽,這樣實際上父rdd 中只有一部分的資料是被用於恢復這個丟失的子rdd分割槽的,另一部分對應子rdd的其它未丟失分割槽,這就造成了多餘的計算;更一般的,寬依賴中子rdd分割槽通常來自多個父rdd分割槽,極端情況下,所有的父rdd分割槽都要進行重新計算。

寬依賴和窄依賴 Spark 寬依賴和窄依賴

1.前言 上一節spark dag概述 spark中rdd的高效與dag圖有著莫大的關係,在dag排程中需要對計算過程劃分stage,暴力的理解就是stage的劃分是按照有沒有涉及到shuffle來劃分的,沒涉及的shuffle的都劃分在乙個stage裡面,這種劃分依據就是rdd之間的依賴關係。針對...

Spark 寬依賴和窄依賴

spark中rdd的高效與dag圖有著莫大的關係,在dag排程中需要對計算過程劃分stage,暴力的理解就是stage的劃分是按照有沒有涉及到shuffle來劃分的,沒涉及的shuffle的都劃分在乙個stage裡面,這種劃分依據就是rdd之間的依賴關係。針對不同的轉換函式,rdd之間的依賴關係分類...

Spark 寬依賴和窄依賴

站在父rdd角度 窄依賴 一對一 站在父rdd角度 寬依賴 一對多 寬依賴和窄依賴 寬依賴 父rdd的分割槽被子rdd的多個分割槽使用 例如 groupbykey reducebykey sortbykey等操作會產生寬依賴,會產生shuffle 窄依賴 父rdd的每個分割槽都只被子rdd的乙個分割...