Hadoop程序中Configured类的用法是什么?

Maj*_*imi 9 hadoop mapreduce toolrunner

大多数Hadoop MapReduce程序都是这样的:

public class MyApp extends Configured Implements Tool {
    @Override
    public int run(String[] args) throws Exception {
        Job job = new Job(getConf());
        /* process command line options */
        return job.waitForCompletion(true) ? 0 : 1;
    }
    public static void main(String[] args) throws Exception {
        int exitCode = ToolRunner.run(new MyApp(), args);
        System.exit(exitCode);
    }
}
Run Code Online (Sandbox Code Playgroud)

有什么用Configured?由于ToolConfigured都有getConf()setConf()共同点.它为我们的应用程序提供了什么?

sha*_*zin 10

Configured是接口的实现类Configurable.Configured是其具有的实现的基类getConf()setConf().

仅仅扩展这个基类使得扩展它的类能够使用a进行配置,Configuration并且有多个实现Configuration.

当您的代码执行以下行时,

ToolRunner.run(new MyApp(), args);
Run Code Online (Sandbox Code Playgroud)

在内部它会做到这一点

ToolRunner.run(tool.getConf(), tool, args);
Run Code Online (Sandbox Code Playgroud)

在上面的例子中toolMyApp类实例,Tool它就像你说的那样实现,getConf()但它只是一个接口.实现来自Configured基类.如果你避免Configured在上面的代码中扩展类,那么你将不得不自己完成getConf()setConf()实现.