Hadoop streaming模式获取jobconf参数

时间:2023-12-27 22:13:13

1. 像map_input_file这种环境变量是在hadoop-streaming.jar程序中设置的,所以无需-cmdenv map_input_file参数就可以在php中直接引用,如$var=getenv('mapred_input_dir');

2. 所有jobconf参数都可以通过环境变量的方式获取,只需将" . "变为" _ "即可。例如,想在php中获取mapred.linerecordreader.maxlength的值,只需getenv('mapred_linerecordreader_maxlength')

因为在hadoop-streaming.jar中有这样一段代码,遍历jobconf的key,value并添加到环境变量:

 Iterator it = conf.iterator();

 while (it.hasNext()) {

       Map.Entry en = (Map.Entry) it.next();

       String name = (String) en.getKey();     

       String value = conf.get(name);

       name = safeEnvVarName(name);   //替换 “ . ”  为 “ _ “

       envPut(env, name, value);

 }