spark --RDD寬窄依賴關係

寬窄依賴

●兩種依賴關係類型

RDD和它依賴的父RDD的關係有兩種不同的類型,即

寬依賴(wide dependency/shuffle dependency)

窄依賴(narrow dependency)

圖解

 

如何區分寬窄依賴

窄依賴:父RDD的一個分區只會被子RDD的一個分區依賴

寬依賴:父RDD的一個分區會被子RDD的多個分區依賴(涉及到shuffle)

 

●面試題:

子RDD的一個分區依賴多個父RDD是寬依賴還是窄依賴?

不能確定,也就是寬窄依賴的劃分依據是父RDD的一個分區是否被子RDD的多個分區所依賴,是,就是寬依賴,或者從shuffle的角度去判斷,有shuffle就是寬依賴

 

●寬窄依賴的算子:

窄依賴算子有:map, filter, union, join(父RDD是hash-partitioned ), mapPartitions, mapValues

寬依賴算子有:groupByKey, join(父RDD不是hash-partitioned ), partitionBy

 

●爲什麼要設計寬窄依賴

1.對於窄依賴

Spark可以並行計算

如果有一個分區數據丟失,只需要從父RDD的對應1個分區重新計算即可,不需要重新計算整個任務,提高容錯。

2.對於寬依賴

是劃分Stage的依據 (詳細見https://blog.csdn.net/weixin_44036154/article/details/105387304)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章