因此,直接使用 hadoop 时很容易处理外部 jar。您有 -libjars 选项可以为您执行此操作。问题是您如何使用 EMR 做到这一点。必须有一个简单的方法来做到这一点。我认为 CLI 的 -cachefile 选项会做到这一点,但我无法让它以某种方式工作。有什么想法吗?
谢谢您的帮助。
因此,直接使用 hadoop 时很容易处理外部 jar。您有 -libjars 选项可以为您执行此操作。问题是您如何使用 EMR 做到这一点。必须有一个简单的方法来做到这一点。我认为 CLI 的 -cachefile 选项会做到这一点,但我无法让它以某种方式工作。有什么想法吗?
谢谢您的帮助。
我对外部 jar 依赖项的最好运气是将它们(通过引导操作)复制到/home/hadoop/lib
整个集群。该路径位于每个主机的类路径上。无论访问外部 jar(工具、作业或任务)的代码位于何处,这种技术似乎都是唯一可行的。
一种选择是让您的工作流程的第一步在需要的地方设置 JAR。或者,如果它们是依赖项,您可以将它们与您的应用程序 JAR(可能在 S3 中)一起打包。
不再使用 EMR /home/hadoop/lib 的较新版本的仅供参考。应该使用 /usr/lib/hadoop-mapreduce。