【发布时间】:2013-01-11 20:33:24
【问题描述】:
我正在尝试使用 CombineFileInputFormat 类,使用 Yelp 的 MrJob 工具进行 EMR。作业流是使用 hadoop 流创建的,MrJob 的文档表明 CombineFileInputFormat 类必须捆绑在自定义的 hadoop-streaming.jar 中。
有关上下文,请关注此question。
我的具体问题是:具体类CombinedInputFormat.class 应该在hadoop-streaming.jar 中捆绑或引用到哪里?
我尝试通过将CombinedInputFormat.class 添加到目录org/apache/hadoop/streaming 并执行来捆绑CombinedInputFormat.class:
jar uvf my-hadoop-streaming.jar org/apache/hadoop/streaming
如果我这样做,流式作业流程将启动,选项 -inputformat CombinedInputFormat 作业开始第一步并中断,出现错误:
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 错误?
【问题讨论】:
标签: java hadoop streaming mrjob