hadoop mapreduce:当我指定多个 reducer 时,最终的 hdfs 结果文件在哪里?
hadoop mapreduce: where's the final hdfs result file when I speficify multiple reducers?
我有一个 wordCount.java 程序并修改它以支持多个映射器和缩减器,如下所示:
public class WordCount extends Configured implements Tool {
public int run(String[] args) throws Exception {
JobConf conf = new JobConf(getConf(), w1_args.class);
for (int i = 0; i < args.length; ++i) {
if ("-m".equals(args[i])) {
conf.setNumMapTasks(Integer.parseInt(args[++i]));
} else if ("-r".equals(args[i])) {
conf.setNumReduceTasks(Integer.parseInt(args[++i]));
} else {
//
}
...
然后我编译 运行 它:
hadoop jar WordCount-1.0-SNAPSHOT.jar WordCount -m 3 -r 15 input output
它运行很好,当我检查输出目录时:
$ hdfs dfs -ls output-18
Found 16 items
output-18/_SUCCESS
output-18/part-00000
output-18/part-00001
output-18/part-00002
output-18/part-00003
output-18/part-00004
output-18/part-00005
output-18/part-00006
output-18/part-00007
output-18/part-00008
output-18/part-00009
output-18/part-00010
output-18/part-00011
output-18/part-00012
output-18/part-00013
output-18/part-00014
好的,15个reducer应该会产生15个part-xxxx,正如我所料。但是合并所有这些减少结果的最终结果在哪里(15 个拆分文件为 1 个文件)?我在这里的 hdfs 目录中没有看到它。
我应该得到我的文件字数统计文件,而不是 15 个文件,对吗?
MapReduce 不会将reducer 的输出文件合并为一个文件。我们可以使用以下命令将文件合并到本地机器或运行另一个mapreduce作业中合并
hadoop fs -getmerge /hdfs/output/dir/ /single/output/file.txt
我有一个 wordCount.java 程序并修改它以支持多个映射器和缩减器,如下所示:
public class WordCount extends Configured implements Tool {
public int run(String[] args) throws Exception {
JobConf conf = new JobConf(getConf(), w1_args.class);
for (int i = 0; i < args.length; ++i) {
if ("-m".equals(args[i])) {
conf.setNumMapTasks(Integer.parseInt(args[++i]));
} else if ("-r".equals(args[i])) {
conf.setNumReduceTasks(Integer.parseInt(args[++i]));
} else {
//
}
...
然后我编译 运行 它:
hadoop jar WordCount-1.0-SNAPSHOT.jar WordCount -m 3 -r 15 input output
它运行很好,当我检查输出目录时:
$ hdfs dfs -ls output-18
Found 16 items
output-18/_SUCCESS
output-18/part-00000
output-18/part-00001
output-18/part-00002
output-18/part-00003
output-18/part-00004
output-18/part-00005
output-18/part-00006
output-18/part-00007
output-18/part-00008
output-18/part-00009
output-18/part-00010
output-18/part-00011
output-18/part-00012
output-18/part-00013
output-18/part-00014
好的,15个reducer应该会产生15个part-xxxx,正如我所料。但是合并所有这些减少结果的最终结果在哪里(15 个拆分文件为 1 个文件)?我在这里的 hdfs 目录中没有看到它。 我应该得到我的文件字数统计文件,而不是 15 个文件,对吗?
MapReduce 不会将reducer 的输出文件合并为一个文件。我们可以使用以下命令将文件合并到本地机器或运行另一个mapreduce作业中合并
hadoop fs -getmerge /hdfs/output/dir/ /single/output/file.txt