3

以下のレデューサーコードで使用されているキーと値を印刷する方法について誰かが私を助けてくれますか?

LoggerとSystem.outを介して値を出力しようとしましたが、ロガーとコンソールで出力を確認できませんでした。

 public static class IntSumReducer
       extends Reducer<Text,IntWritable,Text,IntWritable> {
    private IntWritable result = new IntWritable();
    //private static final Log LOG = LogFactory.getLog(WordCount.class);
    public void reduce(Text key, Iterable<IntWritable> values,
                       Context context
                       ) throws IOException, InterruptedException {
      int sum = 0;

      for (IntWritable val : values) {
        sum += val.get();
      //LOG.info("val = " + val.get());
      //System.out.println("val = " + val.get());
      }
      //System.out.println("sum = " + sum + " key = " + key);
      //LOG.info("sum = " + sum + " key = " + key);
      result.set(sum);
      context.write(key, result);
    }
  }
4

1 に答える 1

1

System.outとLOG.infoはどちらも機能するはずですが、reduce試行のログを探しに行く必要があります。

これらは、Job Tracker Web UI(http:// jobtracker:50030)で見つけることができます-実行中、完了、失敗、または廃止されたジョブのリストでジョブを見つけ、ハイパーリンクされたジョブIDをクリックします。これにより、ジョブ実行のビューが表示されます。ここから、レデューサータスクをクリックできるはずです(保留中、実行中、完了、失敗、および強制終了の番号が表示されます。できれば、番号の1つをクリックして完了してください。

これで、完了した削減タスクのリストが表示されます。特定のタスクをクリックすると、そのタスクの試行が一覧表示されます。テーブルの右側には、ログ(最初の4k、最後の4、すべて)へのリンクが表示されます。出力メッセージを見つけることができるはずです(上記のコードの前にあるコメントを削除し、System.outまたはLOG.infoの実行を許可してジョブを実行すると仮定します)

于 2012-07-26T10:35:35.037 に答える