2011-12-23 84 views
2

为了MultipleOutputFormat,我使用了版本0.20.2,
并且希望在作业完成后提取计数器。

如何在Hadoop中获取计数器

我试图谷歌一些有用的和实际的例子,但我不能。
任何人都可以显示一个简单的例子吗?

回答

7

如果您要提交你的工作是这样的:

Configuration conf = new Configuration(); 
    Job job = new Job(conf); 

    job.waitForCompletion(true); 

而且它已经完成(你可以叫这个,即使它的运行,但结果将不会被最终确认的话,因为工作还没有。尚未完成),您可以用抢计数器:

long counter = job.getCounters().findCounter(ExplorationReducer.UpdateCounter.UPDATED) 
    .getValue(); 

这是我在我的作业中使用的枚举计数器的名称:

勘探与ationReducer.UpdateCounter.UPDATED

如果你想你必须遍历Counters对象后面垫衬结构的所有计数器。有一个迭代器。

+0

谢谢!你的示例代码似乎是新的API。我发现Job类包含在org.apache.hadoop.mapreduce中。你也可以让我看看旧的API吗? – superscalar 2011-12-23 12:53:39

+0

我可以将我的源代码更改为新的API,但我不确定新的支持MultipleOutputFormat。 – superscalar 2011-12-23 12:55:21

+0

啊有问题。不,格式不行,但是你可以从一个较新的hadoop版本中选择格式,21.0,22.0或23.0,它们是兼容的。 – 2011-12-23 12:57:08