大多数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()
常见的。它为我们的应用程序提供了什么?
2条答案
按热度按时间r7s23pms1#
Configured
是Configurable
接口-基本上是itssetConf
方法将私有示例变量保留到传递的Configuration
对象和getConf()
返回该引用Tool
是Configurable
接口,提供一个run(..)
方法并与一起使用ToolRunner
解析出命令行选项(使用GenericOptionsParser
)建立一个Configuration
对象,然后传递给setConf(..)
方法。主类通常会扩展configured,以便为您实现工具中所需的可配置接口方法。
一般来说,您应该使用toolrunner实用程序类来启动mapreduce作业,因为它处理解析命令行参数和构建配置对象的常见任务。我会查看toolrunner的api文档以获取更多信息。
vq8itlhq2#
Configured
是接口的实现类Configurable
.Configured
是具有的实现的基类getConf()
以及setConf()
.仅仅扩展这个基类就可以使用
Configuration
而且有多个实现Configuration
.当代码执行以下行时,
在内部它会这样做
在上述情况下
tool
是MyApp
类示例,它是Tool
就像你说的那样getConf()
但它只是一个接口。实施来自Configured
基类。如果你避免延伸Configured
类,然后您将必须执行getConf()
以及setConf()
自己实现。