2015-05-28 121 views
0

我想弄清楚MapReduce,到目前爲止我想我已經獲得了一個好的理解。爲什麼MapReduce在映射步驟中將每個值都映射爲1?

但是,有一件事讓我困惑。在MapReduce的每個示例和解釋中,我都可以發現,映射步驟將所有值映射爲1.例如,在最常見的示例中(計算字符串中單詞的出現次數),映射部分將每個單詞分割開來,然後將其映射到值1

的減少部分然後組合/降低等詞語,加起來的倍量它們發生,使得它們映射至N而不是1(N是多少次出現的字)。

我不明白的是:爲什麼還打擾他們映射到1首先?看起來他們總是會映射到1.爲什麼不把它們分開,然後在Reduce步驟中,在那裏進行映射,並同時將所有內容相加?

我敢肯定,我一定有一個很好的理由,我無法想象。謝謝!

(這個問題是關於MapReduce的作爲一般的,不一定對Hadoop的或任何其他特定的技術或實現概念)

回答

0

映射器的輸出是基於你想有使用的情況下決定的。在字數統計中,我們希望映射器分離單個單詞並輸出每個單詞的出現次數。映射器針對輸入中的每個鍵值對(輸入拆分)進行調用。這裏是它的每一行。鍵是偏移量,值是整個句子。在調用reducer之前會執行分組。所以所有的單詞都被分組,每次出現(1次)被計數。發射1作爲映射器輸出並不是一個硬性規則。如果您已經注意到Hadoop中的數據集示例:權威指南,它們將年份和溫度作爲映射器輸出發出。用例將根據年份進行分組並找出最高/最低溫度。爲了基本的理解,你可以把它看作組參數。快樂學習

相關問題