運算元的分類和 寬依賴運算元 窄依賴運算元

2021-09-19 17:42:17 字數 1303 閱讀 9342

過濾 rdd[t]==>rdd[t],窄依賴

rdd[t] ->rdd[o], 窄依賴

rdd[t]–>rdd[[o]],一對多 ,窄依賴,

抽樣運算元 rdd[t]–>rdd[o],窄依賴

rdd[t]–>rdd[t], 根據你指定的內容排序 寬依賴

根據你的k排序,要求rdd中必須是kv的,寬依賴

根據rdd的k分組之後聚合(累加,字串連線) , 寬依賴

把兩個rdd根據k相同合併,結果rdd[k,(v1,v2)] ,寬依賴

左連線 和下面的一致 都是寬依賴

把兩個rdd直接聚合成乙個rdd,資料不合併 ,窄依賴

取兩個rdd的交集,窄依賴

把整個分割槽的資料作為乙個迭代器一次計算 資料量不是特別大 會有效能提公升,窄依賴

去重運算元 本質是map + reducebykey+map 寬依賴

(k,v) (k,w)=>(k,([v],[w])) rdd1相同的key value 放在[v]中 另乙個rdd相同的key 的value 放在[w]中 寬依賴

把整個分割槽的資料作為乙個迭代器一次計算 多了乙個分割槽的index 資料量不是特別大 會有效能提公升,窄依賴

可以增多分割槽,可以減少分割槽,有shuffle 寬依賴

repartition = coalesce(num,shuffle=true)

可以增多分割槽,也可以減少分割槽,預設沒有shuffle 有shuffle就 寬依賴 沒shuffle 就是窄依賴

若rdd由少的分區分到多的分割槽時,不讓產生shuffle, 不起作用

少 - > 多 false rdd1 a、b分割槽 rdd2 0:a 1:b 2: 窄依賴 。 true rdd1 a、b 分割槽 rdd2 0:a1 b1 / 1: a2 b2 / 3: a3 b3 寬依賴

多 - > 少 false rdd1 a、b、c 分割槽 rdd2: 0: a 、 1: b c 窄依賴 。 true rdd1 a、b、c 分割槽 rdd2 0: a1、b1、c1 1:a2、b2、c2 寬依賴

兩個rdd壓成乙個rdd 窄依賴

(k,v)–>(k,iter),根據k相同分組,分組之後把一組的v封裝成乙個迭代器, 寬依賴

迴圈出值

結果會拿到driver端

將結果拿回driver端 返回乙個列表

取出第乙個值

取出num個值 返回driver端

聚合資料 不過 這個是在driver端 不合適聚合大量的資料 適合聚合結果資料

預設將資料儲存在記憶體中

cache() = persist() = persist(storagelevel.memory_only)

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

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

寬依賴和窄依賴

寬依賴和窄依賴如下圖所示 相比於寬依賴,窄依賴對優化很有利 主要基於以下兩點 寬依賴往往對應著shuffle操作,需要在執行過程中將同乙個父rdd的分割槽傳入到不同的子rdd分割槽中,中間可能涉及多個節點之間的資料傳輸 而窄依賴的每個父rdd的分割槽只會傳入到乙個子rdd分割槽中,通常可以在乙個節點...

Spark 寬依賴和窄依賴

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