mapreduce中实现多路径输出主要使用MulitipleOutputs类
通过两个例子可以掌握
输入样例 mulitipleInput.txt
1  | file1 001  | 
输出:
file1和file3开头的记录归到一个文件下
file2和file3开头的记录归到一个文件下
代码
1  | import java.io.IOException;  | 
结果
1  | hadoop fs -cat /user/test/wordTest/mulitipleOutput/file1-m-00000  | 
如果想把file1和file2的内容放入不同的目录下,可以通过指定baseOutputPath,将file1开头的文件放在同一个目录中管理。
将mos.write("file1", value, NullWritable.get());和mos.write("file2", value, NullWritable.get());改为mos.write("file1", value, NullWritable.get(),"file1/part");和mos.write("file2", value, NullWritable.get(),"file2/part");或mos.write(value, NullWritable.get(),"file1/part");和mos.write(value, NullWritable.get(),"file2/part");可以看到输出结果
1  | hadoop fs -ls /user/test/wordTest/mulitipleOutput  | 
指定baseOutputPath输出路径和输出文件名直接按照baseOutPutPath指定,但是默认输出文件名后缀会跟上-r-00000,如果想更改可以继承FileOutputFormat重写RecordWriter实现。