是否可以根據密鑰將減速機的輸出寫入不同的文件?減速機輸出到基於密鑰的不同文件
例如,如果我喂以下數據到減速機:
(Key, Value) ==> (1, A) (1, B) (2, C) (2, D)
輸出應被寫入到2個不同的文件OUTPUT1和OUTPUT2,
OUTPUT1必須包含:
(key, Value) ==> (1, [A,B])
output2必須包含:
(key value) ==> (2, [C,D])
有人可以指導我如何做到這一點?
是否可以根據密鑰將減速機的輸出寫入不同的文件?減速機輸出到基於密鑰的不同文件
例如,如果我喂以下數據到減速機:
(Key, Value) ==> (1, A) (1, B) (2, C) (2, D)
輸出應被寫入到2個不同的文件OUTPUT1和OUTPUT2,
OUTPUT1必須包含:
(key, Value) ==> (1, [A,B])
output2必須包含:
(key value) ==> (2, [C,D])
有人可以指導我如何做到這一點?
默認分區是HashPartitoner
。
他們保證相同的密鑰在同一個Reducer中結束。
如果您需要使用不同的鍵輸出相同的值到一個文件 - 您可以使用Custom Partitioners
。
eg: 1,[A,B,G,M]
1,[A,K,I,Y]
2,[G,A,O]
2,[U]
如果你需要一個包含相同reducer的值,你可以使用自定義分區器。
在這個特殊的如我們打破減少理論(同一個鍵進入相同的減速)。而實現自定義分區
1,[A,B,G,M]
1,[A,K,I,Y]
2,[G,A,O]
進入1減速,即使他們是不一樣的關鍵。
入住這link
還通過Custom Partitioner : N number of keys to N different files
去,我想做到這一點最簡單的方法是使用MultipleOutputs。它將允許您指定多個輸出目標以及何時在您的減速器內寫入它們。
您正在尋找 MultipleOutputs。它允許您將數據寫入多個目標(文件,Redis等NoSQL數據庫,...)。這個鏈接應該讓你開始:http://yaseminavcular.blogspot.fr/2011/04/hadoop-multipleoutputformat.html
接受答案,如果這樣緩解你的疑問 –