reducer根据键输出到不同的文件

oxcyiej7  于 2021-06-03  发布在  Hadoop
关注(0)|答案(3)|浏览(396)

是否可以根据键将reducer的输出写入不同的文件?
例如,如果我将以下数据输入到减速器:

(Key, Value) ==> (1, A) (1, B) (2, C) (2, D)

输出应写入两个不同的文件output1和output2,
输出1必须包含:

(key, Value) ==> (1, [A,B])

输出2必须包含:

(key value) ==> (2, [C,D])

有人能指导我怎么做吗?

n6lpvg4x

n6lpvg4x1#

默认分区器为 HashPartitoner .
他们保证同一把钥匙在同一个减速器里。
如果您需要输出相同的值和不同的键到一个文件-您可以使用 Custom Partitioners 为了这个。

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减速器,即使它们不是同一个键。
检查此链接
还要检查自定义分区器:n个不同文件的密钥数

2eafrhcq

2eafrhcq2#

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

vi4fp9gy

vi4fp9gy3#

您正在寻找多个输出。它允许您将数据写入多个目的地(文件、nosql数据库,如redis等等)。此链接可以让您开始:http://yaseminavcular.blogspot.fr/2011/04/hadoop-multipleoutputformat.html

相关问题