我需要通过给出一个目录作为输入来修改mapreduce中的常规单词计数程序



不是给出单个文件作为输入,我想给出一个可以包含任何no文件的目录。我想把输出写成

输入:

File 1 File 2 File3

输出:

File 1 File 2 File3

,而每个文件应该在相应的文件中有其字数。为了确定映射中使用了哪个文件,我可以使用context.getInputSplit()。但是我怎样才能使它以我想要的方式写输出

您可以使用来自映射器的输入分割来识别它们来自的文件,并将其与MultipleOutputs结合使用,以将文件从您的reducer中分离出来。

但是,您需要将它来自的文件传递给reducer,因此您可能需要创建一个复合密钥对象,并编写一个自定义的PartitionerWritableComparator来同时携带文件名和原始密钥。参见:Hadoop -复合键

相关内容

  • 没有找到相关文章