Spark中的narrow wide dependency如何理解,有什麼作用

時間 2021-06-01 01:35:34

1樓:Dennis Mikolaj

Spark 區分narrow 和 shuffle dependency的目的其實就是確定是否要shuffle。也就是劃分stage。而stage的目的是什麼呢?

stage的英文意思是階段,也就是說要等前乙個stage的tasks全部計算完成才能進行下乙個stage。

弄明白stage再回到dependency中,narrow就是不用shuffle的。剛開始對N:N narrow dependency有個迷惑:

N:N narrow dependency

這種N:N narrow dependency ,子RDD的partition會依賴多個父RDD的partition,不是要等待所有的partition 的tasks計算完成,才進行? 不是應該劃分stage嗎?

其實不是的,這種情況並沒有shuffle。完成乙個partition的task計算就可以接著計算了,不用等其它所有的partition全部完成。 這種情況的案例有笛卡爾積運算

它仍然可以在乙個stage裡的pipeline以乙個task計算。不用等所有的task計算完再計算。因為它不是shuffle操作。

參考:JerryLead/SparkInternals

2樓:Scala

原文:narrow dependencies, where each partition of the parent RDD is used by at most one partition of the child RDD, wide dependencies, where multiple child partitions may depend on it.

如果乙個partition計算完後,立刻pipeline,只用了同乙個task到ResultRDD的partition,這樣計算line是無需等待的叫Narrow dependency. 反之則wide dependency.

3樓:dog ameng

我的疑問和題主一樣,包括為什麼寬依賴不能流水線 (pipeline)優化?

比如cogroup是乙個字分割槽有有限個父分割槽,多個依賴的資料不還是要fetch過來

4樓:Berry Zhu

@用心閣 已經給出了專業答案。

按樓主自己粗糙的說法,「narrow就是獨生子女,乙個父親只有乙個孩子;wide是乙個父親多個孩子」,wide更像是多個父親一(多)個孩子....O(∩_∩)O哈哈~

spark中spark reducer maxSizeInFlight 多大合適?

青牛 你好。如果作業可用的記憶體資源較為充足的話,可以適當增加這個引數的大小 比如96m 從而減少拉取資料的次數,也就可以減少網路傳輸的次數,進而提公升效能。但是具體要看你要拉取得資料量多大。 周康 這個引數控制的是如果超過閾值的block需要等所有shuffle請求結束以後再發起。shuffle過...

spark和deeplearning的關係,想做大資料處理分析,是該專注於學spark還是深度學習呢?

這得看題主將來是想找更偏重演算法還是更偏重系統開發的工作?當然兩者都擅長是最好了,但是Spark好像不太適合deep learning,題主可以嘗試一下別的框架,例如tensorflow,caffe。ps,我覺得你應該聽你導師的,逃! 沒啥關係。Spark只是乙個框架而已,在上面跑什麼都可以。把Sp...

spark的出現,對Mapreduce的影響有多大?

take me mapreduce肯定是要深入學習的,最好看看原始碼,對你理解分布式計算大有裨益。mapreduce,spark,flink都是計算框架,每一種都有其設計的優劣,至於背不背淘汰看公司和業需求吧。 大資料技術架構 首先,Spark的出現對MapReduce的影響巨大,甚至Spark可以...