当前位置: 首页 > 知识库问答 >
问题:

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

池永长
2023-03-14

我已经从一个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的配置)。

如有任何见解,将不胜感激。谢谢

共有1个答案

云瑞
2023-03-14

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

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

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

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

 类似资料:
  • 我正在使用gradle tooling api,我遇到了下面的场景。有一个应用某个插件P的项目,它只在传递shouldApplyP属性时才创建任务T。 因此,如果您将运行,您将看不到任务T,但是如果您将运行,您将看到任务T。 在gradle tooling api中,一旦创建了,我就可以执行 但我看不到这个具体的任务。是否有方法将此属性传递给项目连接,以便在方法中显示该属性?

  • 组件不直接在模板范围中访问属性。 因此,只需在组件减速时声明属性(例如:{{component-name title = title}})。 外部模板范围中的title属性在组件的模板中可用。 语法 (Syntax) {{post-action title=title}} 在上面的代码中,'post-action'组件具有'title'属性,并使用与属性名称('title')相同的名称进行初始化

  • 问题内容: 在我的HTML文件中,我已通过以下方式链接到JS: 我的JS可以像这样直接读取此var的值吗? 这不起作用,并且FireFox错误控制台显示“未定义配置”。如何读取JS文件中通过src属性传递的var?这样简单吗? 问题答案: 您无法按照尝试的方式将变量传递给JS。SCRIPT标记不会创建Window对象(具有查询字符串),并且它不是服务器端代码。

  • 假设我有一个带有属性的注释: 我想创建一个包含多个元注释的复合注释,包括一个带有属性的注释 有没有一种方法可以将复合注释的属性传递给其中一个元注释? 例如,类似这样的东西: 这相当于,但比 谢谢! PS为我对示例注释的错误选择表示歉意-我没有javax。注射@记住命名注释,只是一些具有属性的任意注释。 谢谢大家的回答/评论。 这显然是不可能的。然而,碰巧我的案例有一个简单的解决方法,我将与大家分享

  • 问题内容: 我有一个属性指令,其限制如下: 我需要传递两个属性;一个数字和一个函数/回调,使用对象在指令中访问它们。 如果指令是元素指令,那么我可以限制为: 但是,出于某种原因,我不再赘述,我需要将该指令作为属性指令。 如何将多个属性传递到属性指令中? 问题答案: 该指令可以访问在同一元素上定义的任何属性,即使该指令本身不是该元素也是如此。 模板: 指示: 如果attribute的值将被硬编码,则

  • 问题内容: 我有一个主类,期望使用-D选项传递某些属性。我可以通过将其作为VM选项发送来在IDE中访问它。 我使用Maven并在尝试以下操作时将此应用程序打包到jar文件中: 要么 没有获取环境系统属性。 关于发生了什么的任何指示? 问题答案: 在。之前传递参数。如果在jar文件之后传递它们,它们将被解释为命令行参数并传递给in 。喜欢,