Mapper/Reducer 1 --> (key,value)
/ | \
/ | \
Mapper/Reducer 2 | Mapper/Reducer 4
-> (oKey,oValue) | -> (xKey, xValue)
|
|
Mapper/Reducer 3
-> (aKey, aValue)
我有一個日誌文件,我與MR1聚合。 Mapper2,Mapper3,Mapper4將MR1的輸出作爲輸入。工作是鏈接的。Hadoop - 如何使用和減少多個輸入?
MR1輸出:
User {infos of user:[{data here},{more data},{etc}]}
..
MR2輸出:
timestamp idCount
..
MR3輸出:
timestamp loginCount
..
MR4輸出:
timestamp someCount
..
我想輸出從MR2-4結合:最終輸出 - >
timestamp idCount loginCount someCount
..
..
..
是有辦法的w/o豬或蜂巢?我正在使用Java。
單獨爲ASCII藝術+1。 – 2013-04-11 11:58:50
第二步是不可能有一個多功能的MR作業,看到你的關鍵是所有的時間戳?即解釋已經傳入的值並相應地處理它?看到reducer保證接收給定密鑰的所有值,您可以收集與時間戳相關的所有信息,並只在您擁有所需的所有組件時才寫出。 – Quetzalcoatl 2013-04-11 12:01:56
其實我這樣做,它的工作。彈出一個問題:爲了實現我想要的功能,我在映射函數中向context(context.write(key1,value1))寫了3次 - 在代碼context.write(key2,value2)和結尾上下文中更深入。寫(key3,value3)。這是可行的嗎? – JustTheAverageGirl 2013-04-11 13:12:43