1

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

4

2 に答える 2

2

ここでCombinedInputFormat説明するクラスは拡張されており、hadoop で移植されていません。したがって、マッパー/リデューサーのジョブ クラスがある同じパッケージで、クラスを作成し、前号で説明したコードを用意する必要があります。次にjarを作成すると、正常に実行されます。CombineFileInputFormat

したがって、基本的には、独自の実装を作成する必要があり(私が作成しました)、私が名前を付けたのではなくCombineFileInputFormat、好きな名前を付けることができます。ABCClassCombinedInputFormat

于 2013-01-11T20:49:42.013 に答える