即前一博文[Hadoop] 通过MultipleInputs处理多输入文件展示如何处理MapReduce多输入问题,本文将展示一下如何处理MapReduce多输出的方法。
MultipleOutputs示例
MultipleOutputsDemo.java源码
Scores.txt
Tomas,100
Edward,81
Henry,59
Gordon,60
James,97
Percy,93
Toby,77
Emily,87
Duke,68
Donald,47
Douglas,35
执行
hadoop jar YquMapreduceDemo.jar MultipleOutputsDemo /user/hadoop/mos_input/scores.txt /user/hadoop/mos_output
测试结果
MultipleOutputs分析
普通Driver
|API|Job属性 |—– |Job.setOutputFormatClass|mapreduce.job.outputformat.class示例:org.apache.hadoop.mapreduce.lib.output.TextOutputFormat |Job.setOutputKeyClass|mapreduce.job.output.key.class示例:org.apache.hadoop.io.Text |Job.setOutputValueClass|mapreduce.job.output.value.class示例:org.apache.hadoop.io.IntWritable
使用MultipleOutputs的Driver
|API|Job属性
|—–
|MultipleOutputs.addNamedOutput|mapreduce.multipleoutputs
示例:pass fail
mapreduce.multipleoutputs.namedOutput.pass.format
示例:org.apache.hadoop.mapreduce.lib.output.TextOutputFormat
mapreduce.multipleoutputs.namedOutput.pass.key
示例:org.apache.hadoop.io.NullWritable
mapreduce.multipleoutputs.namedOutput.pass.value
示例:org.apache.hadoop.io.Text
mapreduce.multipleoutputs.namedOutput.fail.format
示例:org.apache.hadoop.mapreduce.lib.output.TextOutputFormat
mapreduce.multipleoutputs.namedOutput.fail.key
示例:org.apache.hadoop.io.NullWritable
mapreduce.multipleoutputs.namedOutput.fail.value
示例:org.apache.hadoop.io.Text
通过调用org.apache.hadoop.mapreduce.lib.output.MultipleOutputs.write方法,根据相应NamedOutput相应的OutputFormat、OutputKeyClass和OutputValueClass创建NamedOutput自己的RecordWriter,完成相应的输出。