【问题标题】:Amazon EMR: Passing an XML or properties file to a JARAmazon EMR:将 XML 或属性文件传递到 JAR
【发布时间】:2012-05-17 10:06:04
【问题描述】:

我一直在从单个 JAR 文件在 hadoop 集群上运行多个 map reduce 作业。 JAR 的 Main 接受 XML 文件作为命令行参数。 XML 文件包含每个作业的输入和输出路径(名称-值属性对),我使用它们来配置每个 mapreduce 作业。我可以像这样将路径加载到配置中

    Configuration config = new Configuration(false);
    config.addResource(new FileInputStream(args[0]));

我现在正在尝试使用 Amazon 的 Elastic MapReduce 运行 JAR。我尝试将 XML 文件上传到 S3,但当然使用 FileInputStream 从 S3 加载路径数据不起作用(FileNotFound 异常)。

使用 EMR 时如何将 XML 文件传递​​到 JAR?

(我查看了引导操作,但据我所知,这是指定 hadoop 特定的配置)。

任何见解将不胜感激。谢谢。

【问题讨论】:

    标签: java jar hadoop amazon-s3 emr


    【解决方案1】:

    如果您添加一个简单的引导操作

    hadoop fs -copyToLocal s3n://bucket/key.xml /target/path/on/local/filesystem.xml
    

    然后,您将能够按照您的预期在 /target/path/on/local/filesystem.xml 上打开 FileInputStream。引导操作在集群中的所有主/从机器上同时执行,因此它们都会有一个本地副本。

    要添加该引导操作,您需要创建一个包含上述命令的 shell 脚本文件,将 that 上传到 S3,并将其指定为脚本引导操作路径。不幸的是,s3 中的 shell 脚本是目前唯一允许的引导操作类型。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-18
      • 2015-06-30
      • 1970-01-01
      • 1970-01-01
      • 2015-06-13
      相关资源
      最近更新 更多