hadoop程序中配置类的用法是什么?

eoxn13cs  于 2021-06-03  发布在  Hadoop
关注(0)|答案(2)|浏览(356)

大多数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);
    }
}

这个词的用法是什么 Configured ? 作为 Tool 以及 Configured 两者都有 getConf() 以及 setConf() 常见的。它为我们的应用程序提供了什么?

r7s23pms

r7s23pms1#

ConfiguredConfigurable 接口-基本上是its setConf 方法将私有示例变量保留到传递的 Configuration 对象和 getConf() 返回该引用 ToolConfigurable 接口,提供一个 run(..) 方法并与一起使用 ToolRunner 解析出命令行选项(使用 GenericOptionsParser )建立一个 Configuration 对象,然后传递给 setConf(..) 方法。
主类通常会扩展configured,以便为您实现工具中所需的可配置接口方法。
一般来说,您应该使用toolrunner实用程序类来启动mapreduce作业,因为它处理解析命令行参数和构建配置对象的常见任务。我会查看toolrunner的api文档以获取更多信息。

vq8itlhq

vq8itlhq2#

Configured 是接口的实现类 Configurable . Configured 是具有的实现的基类 getConf() 以及 setConf() .
仅仅扩展这个基类就可以使用 Configuration 而且有多个实现 Configuration .
当代码执行以下行时,

ToolRunner.run(new MyApp(), args);

在内部它会这样做

ToolRunner.run(tool.getConf(), tool, args);

在上述情况下 toolMyApp 类示例,它是 Tool 就像你说的那样 getConf() 但它只是一个接口。实施来自 Configured 基类。如果你避免延伸 Configured 类,然后您将必须执行 getConf() 以及 setConf() 自己实现。

相关问题