是否可以根据密钥将减速机的输出写入不同的文件?减速机输出到基于密钥的不同文件
例如,如果我喂以下数据到减速机:
(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
接受答案,如果这样缓解你的疑问 –