CombineFileInputFormatYelpの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!
NoClassDefFoundErrorCombinedInputFormat.class をバンドルして正しく取得し、エラーを解決するにはどうすればよいですか?