微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Java-Amazon EMR:将XML或属性文件传递到JAR

我一直在从单个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 Exception).

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

(我看过引导操作,但据我所知,它指定了特定于hadoop的配置).

任何见识将不胜感激.谢谢.

解决方法:

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

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

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐