Poo*_*abu 19 java hadoop mapreduce parameter-passing
我是Hadoop的新手.我想从mapper类的map函数中的main函数(Java程序)访问命令行参数.请建议如何做到这一点.
Pra*_*ati 19
Hadoop 0.20引入了新的MR API,新的(oahmapreduce包)和旧的MR API(oahmapred)之间没有太大的功能差异,除了可以使用新的API在映射器和reducer中提取数据.提到Arnon的是旧API.
查看本文以使用新旧API传递参数.
Arn*_*-Oz 14
您可以通过在参数上挂起参数来传递参数
JobConf job = new JobConf(new Configuration(), TheJob.class);
job.setLong("Param Name",longValue)
Run Code Online (Sandbox Code Playgroud)
Configuration类有很少的set方法(Long,Int,Strings等),因此您可以传递多种类型的参数.在map作业中,您可以从Context获取配置(getConfiguration)
在最近的 Hadoop(例如 >=0.2 到 2.4+)中,您可以在作业配置期间设置此类选项:
conf = new JobConf(MyJarClass);
conf.set("myStringOption", "myStringValue");
conf.set("myIntOption", 42);
Run Code Online (Sandbox Code Playgroud)
并在mapper/reducer类的方法中检索这些选项configure():
public static class MyMapper extends MapReduceBase implements Mapper<...> {
Integer myIntegerOption;
String myStringOption;
@Override
public void configure(JobConf job) {
super.configure(job);
myIntegerOption = job.getInt("myIntOption", -1);
// nb: last arg is the default value if option is not set
myStringOption = job.get("myStringOption", "notSet");
}
@Override
public void map(... key, ... value,
OutputCollector<..> output, Reporter reporter) throws IOException {
// here you can use the options in your processing
processRecord(key, value, myIntOption, myStringOption);
}
}
Run Code Online (Sandbox Code Playgroud)
请注意,configure()在将任何记录传递到映射或归约之前将调用一次。
| 归档时间: |
|
| 查看次数: |
22104 次 |
| 最近记录: |