假設我想查找每個單詞在某些文本中出現的次數。在MapReduce中,爲什麼map函數在查找單詞出現時輸出1?
我的理解是文本被分成幾部分,每一部分都被傳遞給map
。然後map
會得到字出現的每個部分,並將結果傳遞到reduce
,像這樣:
for each word w in document:
occurrences[w] += 1
return occurrences
然而,根據MapReduce paper和wikipedia,map
只會發出1對每個字,例如:
for each word w in document:
emit(w, 1)
這不就是因爲它將不得不遍歷每個單詞反正直接將文本部分傳遞到reduce
是同樣的事情?
此外,只是爲了確保。如果我想用MapReduce對大數組進行排序,map
是否將其排序爲數組的一部分,然後reduce
會合並排序後的數組,如mergesort?
喂,讓我們說split1包含'cat','cat','mat'。爲什麼我不配置地圖發出'',''而不是'','',''?謝謝 –
mzee99
@ mzee99 - 你可以。但是,這將需要你的地圖持續爲你的每個單詞說明狀態。組合器(https://hadooptutorial.wikispaces.com/Custom+combiner)通常用於執行您提到的步驟。 –
單向或雙向效率方面是否存在差異? – mzee99