Hadoop 根据键将输出减少到不同的文件

Hadoop 根据键将输出减少到不同的文件,hadoop,mapreduce,Hadoop,Mapreduce,是否可以根据键将减速器的输出写入不同的文件 例如,如果我将以下数据提供给减速器: (Key, Value) ==> (1, A) (1, B) (2, C) (2, D) 输出应写入两个不同的文件output1和output2 输出1必须包含: (key, Value) ==> (1, [A,B]) (key value) ==> (2, [C,D]) 输出2必须包含: (key, Value) ==> (1, [A,B]) (key value) ==>

是否可以根据键将减速器的输出写入不同的文件

例如,如果我将以下数据提供给减速器:

(Key, Value) ==> (1, A) (1, B) (2, C) (2, D)
输出应写入两个不同的文件output1和output2

输出1必须包含:

(key, Value) ==> (1, [A,B])
(key value) ==> (2, [C,D])
输出2必须包含:

(key, Value) ==> (1, [A,B])
(key value) ==> (2, [C,D])

有人能告诉我怎么做吗?

默认分区器是
hashpartitor

他们保证同一把钥匙最终会在同一个减速器中

如果需要使用不同的键向一个文件输出相同的值- 您可以使用
自定义分区器

eg: 1,[A,B,G,M]
    1,[A,K,I,Y]
    2,[G,A,O]
    2,[U]
如果您需要在同一个reducer中包含值,则可以使用自定义分区器

在这个特殊的例子中,我们打破了Reduce理论(同一个键进入同一个Reducer)

1,[A,B,G,M] 
1,[A,K,I,Y] 
2,[G,A,O] 
进入1减速器,即使它们不是相同的键

检查这个


同时,我认为实现这一点最简单的方法是使用。它将允许您指定多个输出目标以及何时在减速机中写入它们。

您正在寻找多个输出。它允许您将数据写入多个目的地(文件、NoSQL数据库,如Redis等)。这个链接应该让您开始:

如果答案解决了您的问题,请接受答案