如何从R中的流mapreduce作业中获取文件名?

时间:2014-01-04 01:14:00

标签: r hadoop environment-variables filenames hadoop-streaming

我正在播放一个R mapreduce作业,我需要获取文件名。我知道Hadoop在启动之前为当前作业设置环境变量,我可以使用Sys.getenv()访问R中的env变量。

我发现: Get input file name in streaming hadoop program

和Sys.getenv(mapred_job_id)工作正常,但它不是我需要的。我只需要文件名而不是作业ID或名称。我还发现:How to get filename when running mapreduce job on EC2?

但这也没有帮助。从R流式传输时获取当前文件名的最简单方法是什么?谢谢

1 个答案:

答案 0 :(得分:6)

我没有尝试过这个,但是从你提供的第二个链接来看,这似乎在名为map.input.file的环境变量中可用。然后,这应该工作:

Sys.getenv("map.input.file")

编辑: 经过进一步调查,我了解到你需要用下划线替换这些点,所以这就是这样做的方法:

Sys.getenv("map_input_file")

但是,the map.input.file property has been deprecated in YARN(Hadoop 2.x),所以应该使用新名称:

Sys.getenv("mapreduce_map_input_file")