我讀MapRedcue的源代碼,以獲得更多的理解MapReduce的內部機制。我試圖瞭解在map階段生成的數據如何合併併發送以減少進一步處理的函數時遇到問題。源代碼看起來太複雜了,我只想知道它的概念。MapReduce的排序迭代
我想知道什麼是價值觀(如參數迭代器)是如何通過減少()函數之前排序。在MapTask.runOldReducer()中,它將通過傳遞RawKeyValueIterator來創建ReduceValuesIterator,其中將調用Merger.merge()並執行大量操作(例如,收集段)。閱讀代碼後,它似乎只會嘗試按鍵排序,並且伴隨該鍵的值將被聚合/收集而不被刪除。例如,圖()可以產生
Key Value http://www.abcfood.com/aLink object A http://www.abcfood.com/bLink object B http://www.abcfood.com/cLink object C
然後在減少(),
密鑰將被http://www.abcfood.com/和值將包含對象A,對象B,及對象C.
因此,它是按鑰匙排序http://www.abcfood.com/?它是否正確?或者它是什麼排序,然後通過減少功能?
非常感謝。
值從未在mapreduce中排序。你有完全錯誤的東西。 –