1

Hadoop で複数のジョブを 1 つのジョブにチェーンしようとしています (API バージョン 1.2.1 を使用しています)。このトピックに関する記事を見つけました。ここを参照してください。

私のメインクラスは次のとおりです。チェーンを使用する前は、私の単純な仕事はうまく機能していました。このバージョンは、エラーやログ ファイルからの貴重な情報なしで、10 ~ 20 秒以内に終了します。実際に開始されたジョブは1つもないと確信していますが、その理由はわかりません。

編集: 出力ディレクトリはまったく作成されません。

編集:ここからデバッグするために、jobRunner と handleRun のスニペットをコードに含めました。2回繰り返し実行され(「まだ実行中」が2回表示されます)、正常に終了します。

編集: 私は上司のように何時間もググっています。多くの「動作する」例があるようで、hadoop のバージョンと正しい API 呼び出しで問題が発生します (多くのクラスが hadoop-core.jar 全体で同じ名前で発生します)。

4

1 に答える 1

0

この答えはあなたを助けるかもしれません。使用している API に基づいて、setMapperClass と setReducerClass を使用してマップとレデュース クラスを変更し続け、ジョブを送信する必要があります。また、前のジョブの出力を次のジョブの入力として渡したい場合は、文字列変数を使用して出力パスを動的に指定します (この部分が不要な場合は、スクリプトを作成できます)。

    String input=args[0];
    String out=args[1];
    String output = out+"job1";
    public static String OUTPUT_FILE_NAME = "/part-00000";

以下は古いAPI用です

  /*code for changing mapper and reducer classes*/        
  FileInputFormat.setInputPaths(conf, new Path(input));
  FileOutputFormat.setOutputPath(conf, new Path(output));
  JobClient.runJob(conf);
  input= output+OUTPUT_FILE_NAME;
  output = out + "job2";
   ......
   ......
于 2015-04-18T07:09:49.490 に答える