MAPREDUCE-7174. Mapreduce example wordmedian should handle generic options. Contributed by Fei Hui.

This commit is contained in:
Weiwei Yang 2019-01-02 21:39:45 +08:00
parent eee29ed706
commit 9e7196749e

View File

@ -35,6 +35,7 @@
import org.apache.hadoop.mapreduce.TaskCounter; import org.apache.hadoop.mapreduce.TaskCounter;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat; import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat; import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import org.apache.hadoop.util.GenericOptionsParser;
import org.apache.hadoop.util.Tool; import org.apache.hadoop.util.Tool;
import org.apache.hadoop.util.ToolRunner; import org.apache.hadoop.util.ToolRunner;
@ -173,13 +174,15 @@ public static void main(String[] args) throws Exception {
@Override @Override
public int run(String[] args) throws Exception { public int run(String[] args) throws Exception {
if (args.length != 2) { Configuration conf = new Configuration();
String[] otherArgs =
new GenericOptionsParser(conf, args).getRemainingArgs();
if (otherArgs.length != 2) {
System.err.println("Usage: wordmedian <in> <out>"); System.err.println("Usage: wordmedian <in> <out>");
return 0; return 0;
} }
setConf(new Configuration()); setConf(conf);
Configuration conf = getConf();
Job job = Job.getInstance(conf, "word median"); Job job = Job.getInstance(conf, "word median");
job.setJarByClass(WordMedian.class); job.setJarByClass(WordMedian.class);
@ -188,8 +191,8 @@ public int run(String[] args) throws Exception {
job.setReducerClass(WordMedianReducer.class); job.setReducerClass(WordMedianReducer.class);
job.setOutputKeyClass(IntWritable.class); job.setOutputKeyClass(IntWritable.class);
job.setOutputValueClass(IntWritable.class); job.setOutputValueClass(IntWritable.class);
FileInputFormat.addInputPath(job, new Path(args[0])); FileInputFormat.addInputPath(job, new Path(otherArgs[0]));
FileOutputFormat.setOutputPath(job, new Path(args[1])); FileOutputFormat.setOutputPath(job, new Path(otherArgs[1]));
boolean result = job.waitForCompletion(true); boolean result = job.waitForCompletion(true);
// Wait for JOB 1 -- get middle value to check for Median // Wait for JOB 1 -- get middle value to check for Median