我正在使用新的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]);
答案 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");