gpt4 book ai didi

java - 强制 java jar 在 EMR 上不使用类路径包

转载 作者:行者123 更新时间:2023-12-02 09:52:05 24 4
gpt4 key购买 nike

我正在尝试通过 EMR 上的 spark-submit 运行一个 fat jar。我遇到了与包依赖性相关的问题。该项目依赖于我已包含在 build.sbt 中的 google adwords 库。问题是 google adwords 库内部依赖于一个名为 commons-configuration 版本 1.10 的软件包,但是当我通过 spark-submit 在 EMR 上运行此 jar 时> 通过 yarn Scheduler 运行此包的 1.6 版 (commons-configuration),因为它是 EMR 集群上 CLASSPATH 的一部分。我收到以下错误

java.lang.NoSuchMethodError:org.apache.commons.configuration.MapConfiguration

我尝试使用 spark-submit 的选项 --jars 显式传递依赖项 jar

spark-submit --name my-awesome-spark-job --deploy-mode cluster --class package.path.to.my.Main --jars s3://jar-bucket/jars/commons-configuration-1.10.jar s3://code-bucket/jars/spark-code.jar

无论如何,这样做仍然会给我带来与使用 CLASSPATH 中旧版本的包相同的错误。我想强制我的 jar 将依赖项包含在 fat jar 中,并显式地将它们用于某些库,例如此处的 google adwords 库。谢谢。

最佳答案

您可以尝试隐藏正在使用的且集群上有旧版本的依赖项。

你用什么来构建这个 jar ?我已经在 sbt 中使用了这个策略 https://github.com/sbt/sbt-assembly#shading

但是还有一个maven的shade插件:https://maven.apache.org/plugins/maven-shade-plugin/

关于java - 强制 java jar 在 EMR 上不使用类路径包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56253219/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com