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 应该都可以工作 - 但你必须去寻找减少尝试的日志。

您可以在 Job Tracker Web UI (http://jobtracker:50030) 中找到这些 - 在正在运行、已完成、失败或已停用的作业列表中找到您的作业,然后单击超链接的作业 ID。这将带您进入作业运行的视图。从这里您应该能够单击减速器任务(将有一个用于挂起、运行、完成、失败和终止的数字 - 最好单击其中一个数字以完成。

现在您将获得已完成的 reduce 任务列表 - 单击特定任务应列出该任务的尝试,表格右侧将是日志的链接(前 4k,后 4,全部),其中您应该能够找到您的输出消息(假设您删除了上面代码前面的注释并在允许执行 System.out 或 LOG.info 的情况下运行您的作业)

于 2012-07-26T10:35:35.037 回答