1
我知道在Spark中有一個groupby實現,但我想了解它們是如何工作的。我看着source code。通過使用地圖實現組減少
我不明白究竟它是隻映射鍵還是它也做一個減少操作。
你將如何實現group by-map map/reduce?
我知道在Spark中有一個groupby實現,但我想了解它們是如何工作的。我看着source code。通過使用地圖實現組減少
我不明白究竟它是隻映射鍵還是它也做一個減少操作。
你將如何實現group by-map map/reduce?
這個問題有點令人費解。但是,這是對你的意圖的一次刺殺。
任何aggregate
函數確實需要一個reduce
階段。 groupBy
是這樣一個聚合函數。實際上groupBy
基本上是家族中最爲昂貴的集合函數。
AFA代碼:這清楚地表明:
groupByKey(new HashPartitioner(numPartitions))
注意,HashPartitioner
總是執行shuffle
:所以你得到一個完整的reducer-side
(在地圖/減少行話)操作。
更新該OP詢問有關reduce
如何工作的更多細節。其評估每個記錄的鍵,並根據鍵分配到適當的分區 -
類似於地圖,減少的reduce
根據配置的Partitioner
組合從map
階段的結果。這是shuffle
階段。
然後reducer
邏輯將應用指定aggregate
操作 - 和潛在的額外having
(即過濾器基於集合的條件),並sorting
(如果他們不local
「total`排序)
什麼是減少做? – Lee
@Lee我已經更新了答案,以獲得更多關於'reduce'如何在火花上工作的細節。 – javadba