对于 oozie,如何使用 hadoop 1.3 让用户 jar 优先于 hadoop jar

How do I get user jars to take precedence over hadoop jars, for oozie, using hadoop 1.3

我正在使用 hadoop 1.3 和 oozie。我的 java 操作引用了方法 commons-collection 1.7。这在以前的版本中不存在。该 jar 是一个包含所有 类 的胖 jar,我将其放在工作流程下的 lib 文件夹中。 OOzie 在启动时我的提交操作引用了类路径上的旧 hadoop jar,而不是给予用户 jar 优先权。有什么办法可以优先考虑用户 jar 吗? oozie.launcher.mapreduce.task.classpath.user.precedence=true 将不起作用,因为这是 hadoop 1.3 而不是 hadoop2。

如果您使用 Maven,一种方法是使用 Maven Shade Plugin 在您的 jar 中隐藏有问题的 类。这将透明地重命名 jar 中的 类,这样它们就不会与 Oozie 或 Hadoop 放在类路径中的相同 类 的不同版本发生冲突。