寬依賴與窄依賴區別

2021-08-07 12:04:59 字數 494 閱讀 2068

寬依賴與窄依賴區別

窄依賴(narrow dependencies)

子rdd的每個分割槽依賴於常數個父分割槽(與資料規模無關)

輸入輸出一對一的運算元,且結果rdd的分割槽結構不變。主要是map/flatmap

輸入輸出一對一的運算元,但結果rdd的分割槽結構發生了變化,如union/coalesce

從輸入中選擇部分元素的運算元,如filter、distinct、substract、sample

寬依賴(wide dependencies)

子rdd的每個分割槽依賴於所有的父rdd分割槽

對單個rdd基於key進行重組和reduce,如groupbykey,reducebykey

對兩個rdd基於key進行join和重組,如join

經過大量shuffle生成的rdd,建議進行快取。這樣避免失敗後重新計算帶來的開銷。

注意:reduce是乙個action,和reducebykey完全不同。

寬依賴與窄依賴

1 寬依賴 英文全名 shuffledependency。本質如其名,就是shuffle。每乙個父rdd的partition中的資料,都可能會傳輸一部分,到下乙個rdd的partition中,此時會出現,父rdd和子rdd的partition之間,具有交錯複雜的關係。那麼這兩個rdd之間就是寬依賴,...

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

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

Spark寬依賴與窄依賴的區別

窄依賴是指父rdd的每個分割槽只被子rdd的乙個分割槽所使用,子rdd分割槽通常對應常數個父rdd分割槽。這其中又分兩種情況 1個子rdd分割槽對應1個父rdd分割槽 如map filter等運算元 1個子rdd分割槽對應n個父rdd分割槽 如co paritioned 協同劃分 過的join 寬依...