Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在MapReduce中分别处理多个输入文件_Java_Hadoop_Dictionary_Mapreduce - Fatal编程技术网

Java 在MapReduce中分别处理多个输入文件

Java 在MapReduce中分别处理多个输入文件,java,hadoop,dictionary,mapreduce,Java,Hadoop,Dictionary,Mapreduce,我正在进行Map Reduce项目“像单词计数示例”中的一些更改,在我的情况下,如果我运行该程序,我有许多文件要处理, 我希望每个映射获取其中一个文件并将其与其他文件分开处理“我希望文件的输出独立于其他文件输出” 我尝试使用: 但我得到的输出是将所有文件混合在一起,如果一个单词出现在多个文件中,它会处理一次,这是我不想要的。 我希望每个文件中的字数是分开的 那我怎么用这个呢 如果我把文件放在一个目录中,它会独立处理吗?这就是Hadoop的map reduce的工作方式。所有文件合并在一起,并按键

我正在进行Map Reduce项目“像单词计数示例”中的一些更改,在我的情况下,如果我运行该程序,我有许多文件要处理, 我希望每个映射获取其中一个文件并将其与其他文件分开处理“我希望文件的输出独立于其他文件输出”

我尝试使用:

但我得到的输出是将所有文件混合在一起,如果一个单词出现在多个文件中,它会处理一次,这是我不想要的。 我希望每个文件中的字数是分开的

那我怎么用这个呢


如果我把文件放在一个目录中,它会独立处理吗?

这就是Hadoop的map reduce的工作方式。所有文件合并在一起,并按键排序,具有相同键的所有记录都会馈送到映射器


如果希望一个映射器只查看一个文件,则必须为每个文件运行一个作业,并且必须强制配置为每个作业只有一个映射器。

在映射任务中,您将能够获取正在处理的记录的文件名


一旦你有了文件名,你就可以将其添加到映射输出键中,形成一个复合键,并实现一个分组比较器,将同一文件中的键分组到一个减缩器中。

回答得好,在我的例子中,我想为每个文件及其内容发送一个标题,这样我就可以像你说的那样将标题添加为文件名。我现在将尝试分组比较器,我希望它能工作。谢谢
Path filesPath = new Path("file1.txt,file2.txt,file3.txt");

MultipleInputs.addInputPath(job, filesPath, TextInputFormat.class, Map.class);