CombineFileInputFormat
YelpのEMR用MrJobツールを使用してクラスを使用しようとしています。ジョブフローは Hadoop ストリーミングを使用して作成され、MrJob のドキュメントには、CombineFileInputFormat
クラスをカスタマイズされた .xml ファイルにバンドルする必要があることが示されてい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
でジョブが最初のステップを開始して中断し、エラーが発生します。
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!
NoClassDefFoundError
CombinedInputFormat.class をバンドルして正しく取得し、エラーを解決するにはどうすればよいですか?