在地图中减少单词计数程序需要获取单词所在的文件

时间:2019-07-01 15:42:03

标签: java hadoop mapreduce hadoop2 hadoop-partitioning

我正在读取多个输入文件以解决字数统计问题。

示例文件名: file1.txt file2.txt file3.txt

我能够得到单词计数,但是如果我还想获得文件名以及单词存在的数量,应该添加什么。

例如

文件1的内容:欢迎使用Hadoop

文件2的内容:这是hadoop

当前输出:

Hadoop 2

是1

此1

至1

欢迎1

预期输出:

Hadoop 2 File01.txt File02.txt

是1个File02.txt

这1个File02.txt

至1 File01.txt

欢迎1 File01.txt

1 个答案:

答案 0 :(得分:1)

第一次输入分割 String file = ((FileSplit)inputSplit).getPath().getName(); 并从mapper收集单词和文件名作为输出。

在化简器中,根据键计数文件名,并递增计数器,并继续附加文件名。

   file += filename;
   textString = counter + file;
   output.collect(key,new Text(textString));

这解决了问题。