是否可以根据键将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])
有人能指导我怎么做吗?
n6lpvg4x1#
默认分区器为 HashPartitoner .他们保证同一把钥匙在同一个减速器里。如果您需要输出相同的值和不同的键到一个文件-您可以使用 Custom Partitioners 为了这个。
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个不同文件的密钥数
2eafrhcq2#
我认为实现这一点最简单的方法是使用多次输出。它将允许您指定多个输出目标,以及何时在减速机中写入它们。
vi4fp9gy3#
您正在寻找多个输出。它允许您将数据写入多个目的地(文件、nosql数据库,如redis等等)。此链接可以让您开始:http://yaseminavcular.blogspot.fr/2011/04/hadoop-multipleoutputformat.html
3条答案
按热度按时间n6lpvg4x1#
默认分区器为
HashPartitoner
.他们保证同一把钥匙在同一个减速器里。
如果您需要输出相同的值和不同的键到一个文件-您可以使用
Custom Partitioners
为了这个。如果您需要一个包含同一个reducer中的值的分区器,您可以使用自定义分区器。
在这个例子中,我们打破了reduce理论(同一个键进入同一个reducer)
进入1减速器,即使它们不是同一个键。
检查此链接
还要检查自定义分区器:n个不同文件的密钥数
2eafrhcq2#
我认为实现这一点最简单的方法是使用多次输出。它将允许您指定多个输出目标,以及何时在减速机中写入它们。
vi4fp9gy3#
您正在寻找多个输出。它允许您将数据写入多个目的地(文件、nosql数据库,如redis等等)。此链接可以让您开始:http://yaseminavcular.blogspot.fr/2011/04/hadoop-multipleoutputformat.html