我正在使用新的Hadoop API并寻找一种方法将一些参数(少量字符串)传递给映射器.
我怎样才能做到这一点?
JobConf job = (JobConf)getConf();
job.set("NumberOfDocuments", args[0]);
Run Code Online (Sandbox Code Playgroud)
这里," NumberOfDocuments"是参数的名称,其值是args[0]从命令行参数" " 读取的.设置此参数后,可以在reducer或mapper中检索其值,如下所示:
private static Long N;
public void configure(JobConf job) {
N = Long.parseLong(job.get("NumberOfDocuments"));
}
Run Code Online (Sandbox Code Playgroud)
注意,棘手的部分是你不能设置这样的参数:
Configuration con = new Configuration();
con.set("NumberOfDocuments", args[0]);
Run Code Online (Sandbox Code Playgroud)
Pra*_*ati 44
在main方法中,在运行作业时设置所需的参数,或使用-D命令行选项.
Configuration conf = new Configuration();
conf.set("test", "123");
Job job = new Job(conf);
Run Code Online (Sandbox Code Playgroud)
在mapper/reducer中获取参数为
Configuration conf = context.getConfiguration();
String param = conf.get("test");
Run Code Online (Sandbox Code Playgroud)