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); }