如何为reducer中的每个键输出单独的输出文件?

时间:2013-09-25 18:00:16

标签: hadoop mapreduce

我有一个map-reduce程序,其中映射器生成多个键。根据map-reduce框架,具有相同密钥的所有对都被转移到相同的reducer。假设我有10个键(总共)和3个减速器。减速器最后输出的是3个输出文件。是否有任何技术可以为每个键生成一个单独的输出文件,并在最后输出10个输出文件?可以有10个减速器,但是当键数增加时,这个解决方案可能无法实现。

2 个答案:

答案 0 :(得分:0)

这听起来不是一个好主意。一旦你开始使用Hadoop来实现真实的东西,你将面临严重的问题。

但如果您仍然需要它,为什么不跳过Reduce阶段。只需直接从Mappers发出输出,然后是Combiner。

答案 1 :(得分:0)

如果你可以使用旧的mapred API,那么可以选择这样做:

您可以使用MultipleTextOutputFormat的重写扩展名,然后将记录的所有内容作为“value”的一部分,同时将文件名或路径作为键。

oddjob库中已经提供了一个实现:MultipleLeafValueOutputFormat,您也可以自己实现。

详细了解here。另请阅读我的类似答案here