我一直在从单个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] 举报,一经查实,本站将立刻删除。