2014-04-11 42 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。它将允许您指定多个输出目标以及何时在您的减速器内写入它们。