寬依賴 (narrow dependency) 和窄依賴 (wide dependency)


Spark 中:窄依賴:上游 RDD 流向至多一個下游 RDD ;寬依賴:上游 RDD 流向多個下游 RDD 。

這里的寬和窄,說的是當前節點流向下游節點,當前節點數據是否會分區變多份。

寬依賴往往需要 shuffle 操作,stage 會增加。寬依賴導致當前節點分區,可

能增加數據傳輸量,下游故障導致當前整個 RDD 重新計算,浪費。不同算子產生

相應的寬窄依賴。

 

Flink 中也有 stage 的概念,叫 task,多個算子合成一個 task,合成條件要滿足:

  • 上下游的並行度一致
  • 下游節點的入度為1 (也就是說下游節點沒有來自其他節點的輸入)
  • 上下游節點都在同一個 slot group 中(下面會解釋 slot group)
  • 下游節點的 chain 策略為 ALWAYS(可以與上下游鏈接,map、flatmap、filter等默認是ALWAYS)
  • 上游節點的 chain 策略為 ALWAYS 或 HEAD(只能與下游鏈接,不能與上游鏈接,Source默認是HEAD)
  • 兩個節點間數據分區方式是 forward(參考理解數據流的分區) 用戶沒有禁用 chain


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM