MultipleOutputs 多文件输出问题
我设置了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
这个 是什么情况阿???难道不能同时有两个输入文件么?
这个是多输出的
hadoop机制支持多文件输入和输出
这个应该是自定义文件名称。文件名字是方面,关心的是结果,结果是什么样子的。
本帖最后由 desehawk 于 2015-2-5 00:10 编辑
xuanxufeng 发表于 2015-2-4 18:44
这个应该是自定义文件名称。文件名字是方面,关心的是结果,结果是什么样子的。
使用不同的方式,mapreduce处理方式不一样。
换成这种方式就好了
FileInputFormat.addInputPath(job, new Path(args));
FileInputFormat.addInputPath(job, new Path(args));
FileInputFormat.addInputPath(job, new Path(args));
FileInputFormat.addInputPath(job, new Path(args));
这种方式可以接收多个路径下的文件输入,但是这些文件都是通过一个Map进行处理
更多参考
hadoop多路径总结
值得研究的问题
页:
[1]