我正在尝试CombineFileInputFormat
使用 Yelp 的 MrJob 用于 EMR 工具的课程。作业流是使用 hadoop 流创建的,MrJob 的文档表明CombineFileInputFormat
该类必须捆绑在自定义的hadoop-streaming.jar
.
有关上下文,请遵循此问题。
具体来说,我的问题是:具体类应该在哪里CombinedInputFormat.class
捆绑或引用hadoop-streaming.jar
?
我尝试CombinedInputFormat.class
通过将其添加到目录org/apache/hadoop/streaming
并执行来捆绑:
jar uvf my-hadoop-streaming.jar org/apache/hadoop/streaming
如果我这样做,则流式作业流程将启动,并选择-inputformat CombinedInputFormat
Job 开始第一步并中断,并出现错误:
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/streaming/CombinedInputFormat (wrong name: CombinedInputFormat)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
...
如果我只是尝试将其设置在根路径中:
jar uvf my-hadoop-streaming.jar CombinedInputFormat.class
我得到的错误是:
-inputformat : class not found : CombinedInputFormat
Streaming Job Failed!
我应该如何捆绑 CombinedInputFormat.class 以便正确获取并解决NoClassDefFoundError
错误?