将参数传递给Hadoop映射器

时间:2011-11-23 15:11:29

标签: hadoop mapreduce

我正在使用新的Hadoop API 并寻找一种方法将一些参数(少量字符串)传递给映射器。
我该怎么做?

This solutions works for old API

JobConf job = (JobConf)getConf();
job.set("NumberOfDocuments", args[0]);

这里,“NumberOfDocuments”是参数的名称,其值是从命令行参数“args[0]”读取的。设置此参数后,可以按如下方式在reducer或mapper中检索其值:

private static Long N;
public void configure(JobConf job) {
     N = Long.parseLong(job.get("NumberOfDocuments"));
}

注意,棘手的部分是你不能设置这样的参数:

Configuration con = new Configuration();
con.set("NumberOfDocuments", args[0]);

1 个答案:

答案 0 :(得分:43)

在main方法中,如下所示设置所需参数,或在运行作业时使用-D command line option

Configuration conf = new Configuration();
conf.set("test", "123");

Job job = new Job(conf);

在mapper / reducer中获取参数

Configuration conf = context.getConfiguration();
String param = conf.get("test");