分享

MultipleOutputs 多文件输出问题

536528395 发表于 2015-2-4 15:50:27 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 4 18220

我设置了MultipleOutputs 用于多文件输出:
        MultipleOutputs.addNamedOutput(job, "aaa", TextOutputFormat.class,
                                Text.class, IntWritable.class);
                MultipleOutputs.addNamedOutput(job, "bbb", TextOutputFormat.class,
                                Text.class, IntWritable.class);
                MultipleOutputs.addNamedOutput(job, "other", TextOutputFormat.class,
                                Text.class, IntWritable.class);


这个是reduce中的:
                        if(key.toString().startsWith("a")){
                                mos.write("aaa", key, result);
                        }else if(key.toString().startsWith("b")){
                                mos.write("bbb", key, result);
                        }else{
                                mos.write("other", key, result);
                        }


输入路径是两个:
                FileInputFormat.setInputPaths(job, inputPath, inputPath3);


但是我得到的结果不是想要的,因为它并没有把我的两个输入文件合并算阿,是一个一个算的,输出结果:

-rw-r--r--   3 user01 supergroup          0 2015-02-04 15:35 /tmp/output/_SUCCESS
-rw-r--r--   3 user01 supergroup          5 2015-02-04 15:35 /tmp/output/aaa-m-00000
-rw-r--r--   3 user01 supergroup          7 2015-02-04 15:35 /tmp/output/aaa-m-00001
-rw-r--r--   3 user01 supergroup          5 2015-02-04 15:35 /tmp/output/bbb-m-00000
-rw-r--r--   3 user01 supergroup          5 2015-02-04 15:35 /tmp/output/bbb-m-00001
-rw-r--r--   3 user01 supergroup          9 2015-02-04 15:35 /tmp/output/other-m-00000
-rw-r--r--   3 user01 supergroup         14 2015-02-04 15:35 /tmp/output/other-m-00001
-rw-r--r--   3 user01 supergroup          0 2015-02-04 15:35 /tmp/output/part-r-00000


这个 是什么情况阿???难道不能同时有两个输入文件么?

已有(5)人评论

跳转到指定楼层
xuanxufeng 发表于 2015-2-4 16:31:56
这个是多输出的
hadoop机制支持多文件输入和输出

点评

你没理解我说的什么意思么?我知道这个是多输出,但是这个结果不太多阿。我是两个文件输入的,我运行的是wordcount 不是应该是两个文件合起来算么。但是现在是一个文件单独统计的,所以出现了00000和00001  发表于 2015-2-4 17:10
回复

使用道具 举报

xuanxufeng 发表于 2015-2-4 18:44:34
这个应该是自定义文件名称。文件名字是方面,关心的是结果,结果是什么样子的。
回复

使用道具 举报

desehawk 发表于 2015-2-5 00:08:38
本帖最后由 desehawk 于 2015-2-5 00:10 编辑
xuanxufeng 发表于 2015-2-4 18:44
这个应该是自定义文件名称。文件名字是方面,关心的是结果,结果是什么样子的。

使用不同的方式,mapreduce处理方式不一样。

换成这种方式就好了
  1. FileInputFormat.addInputPath(job, new Path(args[0]));
  2. FileInputFormat.addInputPath(job, new Path(args[1]));
  3. FileInputFormat.addInputPath(job, new Path(args[2]));
  4. FileInputFormat.addInputPath(job, new Path(args[3]));
复制代码


这种方式可以接收多个路径下的文件输入,但是这些文件都是通过一个Map进行处理

更多参考

hadoop多路径总结
回复

使用道具 举报

zhujun182104906 发表于 2015-2-6 14:44:05
值得研究的问题
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条