Amazon EMR:将XML或属性文件传递给JAR

时间:2012-05-08 21:31:26

标签: java jar hadoop amazon-s3 emr

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

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

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

如何在使用EMR时将XML文件传递给JAR?

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

任何见解都将受到赞赏。感谢。

1 个答案:

答案 0 :(得分:4)

如果您添加了一个

的简单引导操作
hadoop fs -copyToLocal s3n://bucket/key.xml /target/path/on/local/filesystem.xml

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

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