0

複数のマッパー クラスを 1 つのジョブに設定できますか?

たとえば、HDFS からの csv 入力ファイルがあります。私には 2 つのタスクがあります。1 つ目は、csv 入力ファイルから 2 つのフィールドをカウントし、結果を出力ファイルに取得することです。2 つ目は、同じ csv 入力ファイルから別の 2 つのフィールドをカウントし、結果を別の出力ファイルに取得することです。リデューサーも同じです。

1 つのジョブを使用してこれを達成し、それらを同時に処理するにはどうすればよいでしょうか? (最初のものを実行したくないし、最初のものの終了後に 2 番目を実行したくないので、それらを並行して処理させたい)。

次のコードを試します。

    job1.setMapperClass(Mapper1.class);
    job1.setReducerClass(LogReducer.class);

    job1.setMapperClass(Mapper2.class);
    job1.setReducerClass(LogReducer.class);

試してみましたが、うまくいきません。2 番目の結果しか表示されず、最初の結果は消えてしまいました。

4

3 に答える 3

1

レデューサーから複数のファイルに書き込むには、HadoopのMultipleOutputsクラスをご覧ください。reduce メソッドの条件に基づいて、2 番目のファイルに出力を書き込みます。

于 2013-07-19T05:38:03.010 に答える