2014-04-11 72 views
0

是否可以根據密鑰將減速機的輸出寫入不同的文件?減速機輸出到基於密鑰的不同文件

例如,如果我喂以下數據到減速機:

(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]) 

有人可以指導我如何做到這一點?

回答

1

默認分區是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

+0

接受答案,如果這樣緩解你的疑問 –

0

去,我想做到這一點最簡單的方法是使用MultipleOutputs。它將允許您指定多個輸出目標以及何時在您的減速器內寫入它們。