获取Hadoop reducer

时间:2015-07-15 23:47:51

标签: hadoop mapreduce

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

示例输入:

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

因此,在所有Reducers中,我需要访问Mappers 加上所发布的总行数(在本例中为3)。

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

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

3 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:2)

这里你需要的是一个柜台:https://hadoop.apache.org/docs/current/api/org/apache/hadoop/mapred/Counters.html

Hadoop预定义了一组标准计数器(包括映射器处理的行数,这可能是您正在寻找的),但您也可以定义自己的自定义计数器。以下是如何执行此操作的示例:Accessing a mapper's counter from a reducer

答案 2 :(得分:0)

假设您尚未指定自定义记录阅读器,您只需要在减速器的MAP_INPUT_RECORDSsetup方法中获取计数器configure的值(基于是否你分别使用新的或旧的API)。

有关这两种API的说明,请参阅this postthis post