0

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

4

2 回答 2

0

这听起来不是一个好主意。一旦您开始将 Hadoop 用于实际工作,您将面临严重的问题。

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

于 2013-09-25T18:24:46.017 回答
0

如果您可以使用旧mapredAPI,则可以使用另一种方法:

您可以选择覆盖的扩展名,MultipleTextOutputFormat然后将记录的所有内容作为“值”的一部分,同时将文件名或路径作为键。

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

在此处阅读更多相关信息。也在这里阅读我的类似答案。

于 2013-09-25T18:49:31.350 回答