获取Hadoop reducer中输入记录的个数



在我的reducer中,我需要映射器处理的输入"行"的总数。

样本输入:

  • 行,1,输入
  • 线2,输入
  • 线3,输入

所以,在所有的reducer中,我需要访问由Mappers 加上发出的任何东西的总行数(在本例中为3)。

我假设我将需要多个工作或链接在一起一些映射器和/或减少,但我不确定正确的方式。

注意:这不是一个简单的平均程序,所以我不能只从映射器中获得一个键。

job.getCounters().findCounter(TaskCounter.MAP_INPUT_RECORDS).getValue()获取记录总数

这里需要的是一个计数器:https://hadoop.apache.org/docs/current/api/org/apache/hadoop/mapred/Counters.html

Hadoop预定义了一组标准计数器(包括映射器处理的行数,这可能是您正在寻找的),但您也可以定义自己的自定义计数器。下面是如何做到这一点的一个示例:从reducer

访问映射器's计数器

假设您没有指定自定义Record Reader,您只需要在您的reducer的setupconfigure方法中获得计数器MAP_INPUT_RECORDS的值(分别基于您使用的是新API还是旧API)。

请参阅这篇文章和这篇文章,了解这两个api的说明

相关内容

  • 没有找到相关文章

最新更新