关于GenericOptionsParser getRemainingArgs方法


package com.ibm.dw61;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import org.apache.hadoop.util.GenericOptionsParser;
import com.ibm.dw61.MaxTempReducer;
import com.ibm.dw61.MaxTempMapper;

public class MaxMonthlyTemp {
    public static void main(String[] args) throws Exception {
        Configuration conf = new Configuration();
        String[] programArgs = new GenericOptionsParser(conf, args)
                .getRemainingArgs();
        if (programArgs.length != 2) {
               System.err.println("Usage: MaxTemp <in> <out>");
               System.exit(2);
            }
        Job job = new Job(conf, "Monthly Max Temp");
        job.setJarByClass(MaxMonthlyTemp.class);
        job.setMapperClass(MaxTempMapper.class);
        job.setCombinerClass(MaxTempReducer.class);
        job.setReducerClass(MaxTempReducer.class);
        job.setOutputKeyClass(Text.class);
        job.setOutputValueClass(IntWritable.class);
        FileInputFormat.addInputPath(job, new Path(programArgs[0]));
        FileOutputFormat.setOutputPath(job, new Path(programArgs[1]));
        // Submit the job and wait for it to finish.
        System.exit(job.waitForCompletion(true) ? 0 : 1);
    }
}

问题:

1)这是一个map-reduce代码,用于提取每个月的最高温度。编码器正在尝试使用getRemainingArgs方法获得非泛型选项。但是下一行说,如果非泛型选项的数量不是2,这意味着有一个错误,程序将立即中止。我不明白这里编码器的逻辑是什么。有人能解释一下吗?

2)在另一个例子Wordcount中,编码器没有执行获取非泛型选项的这一步。那么在什么情况下我们必须执行这一步并测试非通用选项是否为2?

您可以在Hadoop API文档中看到,getRemainingArgs方法的目的是提取与Hadoop框架无关的应用程序特定参数。在这段代码中,您应该指定两个参数,首先是输入,然后是输出,正如您在Usage

中看到的那样

相关内容

  • 没有找到相关文章

最新更新