【问题标题】:How to use external jar in EMR?如何在 EMR 中使用外部 jar?
【发布时间】:2020-02-10 22:38:10
【问题描述】:

我的 EMR 作业依赖于一些在作业执行时应该存在于类路径中的外部 jar。所以我已经将这些 jar 上传到 S3 存储桶并 参考How to use -libjars on aws emr?我已经尝试过haddop中的copyToLocal操作。但是引导操作抱怨 /usr/bin/hadoop 不存在。使用 /home/hadoop/bin/hadoop 时甚至会失败。我想知道其他人如何将jar下载到BA中的每个主机。

Bash 脚本

sudo /usr/bin/hadoop fs -copyToLocal 'se://my-bucket/emr-input/dependency-jars/*' /usr/lib/hadoop

BA 时出错

sudo: /usr/bin/hadoop: command not found

【问题讨论】:

  • 您引用的帖子很旧,因此 EMR 版本中可能存在版本差异,导致植入困难。您使用的是什么 EMR 版本?如果是 4.x,则引导程序可以使用 AWS CLI 在 jar 上进行复制(Hadoop 在引导程序完成之前不可用)。

标签: hadoop amazon-emr


【解决方案1】:

我遵循了此链接中的第二个选项,它对我有用

https://blog.cloudera.com/blog/2011/01/how-to-include-third-party-libraries-in-your-map-reduce-job/

它适用于 cloudera 以及亚马逊的 AWS。

在您的项目文件夹中创建一个 lib 文件夹,并将所有外部 jar 文件添加到该 lib 文件夹中。现在为您的项目创建一个 jar 文件。

现在,当您在集群上运行 jar 文件时,将处理外部依赖项。

【讨论】:

    猜你喜欢
    • 2019-12-19
    • 1970-01-01
    • 2010-11-23
    • 1970-01-01
    • 2020-02-22
    • 2015-08-22
    • 2015-12-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多