gpt4 book ai didi

java - mapreduce 时的 Hadoop 库冲突

转载 作者:可可西里 更新时间:2023-11-01 16:19:03 26 4
gpt4 key购买 nike

我有一个使用 Hadoop API 来启动各种远程 mapreduce 作业的 jar(即,我没有使用命令行来启 Action 业)。执行各种作业的服务 jar 是使用 maven 的“jar-with-dependencies”构建的。

除了使用 commons-codec 1.7 的作业外,我的所有作业都运行良好,我得到:

FATAL org.apache.hadoop.mapred.Child: Error running child : java.lang.NoSuchMethodError: org.apache.commons.codec.binary.Base64.encodeAsString([B)Ljava/lang/String;

我认为这是因为我的 jar 包含 commons-codec 1.7 而我的 Hadoop 安装的 lib 包含 commons-codec 1.4 ...

他们是否有任何方法指示 Hadoop 使用分布式 commons-codec 1.7(我假设这是作为作业依赖项分发的)而不是 hadoop 1.0.3 核心库中的 commons-codec 1.4?

非常感谢!

注意:从我的 Hadoop 库文件夹中删除 commons-codec-1.4.jar 确实解决了问题,但似乎不太理智。希望有更好的选择。

最佳答案

两种方法:

  • 您应该能够从 hadoop 依赖项中排除 commons-codec,并为 commons-codec 添加另一个显式依赖项
  • 尝试将范围设置为提供,以便不包含任何 hadoop jar。这假定这些 jar 将位于运行时类路径中。

关于java - mapreduce 时的 Hadoop 库冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12664243/

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