【问题标题】:How can to get the filename from a streaming mapreduce job in R?如何从 R 中的流式 mapreduce 作业中获取文件名?
【发布时间】:2014-01-21 19:50:10
【问题描述】:

我正在流式传输 R mapreduce 作业,我需要获取文件名。我知道 Hadoop 在开始之前为当前作业设置环境变量,我可以使用 Sys.getenv() 访问 R 中的环境变量。

我发现: 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 流式传输时获取当前文件名的最简单方法是什么?谢谢

【问题讨论】:

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


    【解决方案1】:

    我还没有尝试过,但是从您提供的第二个链接来看,这似乎可以在名为 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")
    

    【讨论】:

    • 它不起作用,我认为这是因为该帖子使用了来自 Amazon 的弹性 mapreduce,它具有额外的支持。我也试过“map_input_file”,结果完全一样。
    • @jason 你在使用 YARN 吗?如果是这样,您应该使用新的属性名称。请参阅我的更新答案。
    • 我想通了。 “map_input_file”工作正常,但它返回完整路径,导致事情中断,这就是我的工作崩溃的原因。感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 2011-12-25
    • 2021-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-09
    相关资源
    最近更新 更多