Hadoop中自定义计数器的备用文本

时间:2014-05-07 01:49:05

标签: hadoop mapreduce hadoop2

我定义了以下计数器

static enum BadRecordCounters
{
    NO_CREATION_DATE, UNKNOWN_USER_ID, UNPARSEABLE_RECORD, UNTAGGED_POSTS
}

,它们显示如下

14/05/06 21:43:06 INFO mapred.JobClient:   com.aravind.learning.hadoop.mapred.techtalks.StackoverflowDataWranglerMapper$BadRecordCounters
14/05/06 21:43:06 INFO mapred.JobClient:     UNKNOWN_USER_ID=93
14/05/06 21:43:06 INFO mapred.JobClient:     UNTAGGED_POSTS=2461

我想知道是否有机制为这些使用替代文字。例如,我想将计数器组读作错误记录计数器而不是FQCN。

2 个答案:

答案 0 :(得分:3)

Map Reduce允许您通过属性文件修改程序中指定的计数器的标签。

最终指南有一个名为"可读计数器名称"处理这个话题。

我只是在这里复制相关部分

  

提供可读名称的方法如下。创建一个   以enum命名的属性文件,使用下划线作为   嵌套类的分隔符。属性文件应该在   与包含枚举的顶级类相同的目录。该文件是   名为MaxTemperatureWithCounters_Temperature.properties的   示例8-1中的计数器。

     

属性文件应包含一个名为的属性   CounterGroupName,其值是整个组的显示名称。   然后枚举中的每个字段都应该具有相应的属性   为它定义,其名称是后缀字段的名称   .name,其值是计数器的显示名称。

MaxTemperatureWithCounters_Temperature.properties:
CounterGroupName=Air Temperature Records
MISSING.name=Missing
MALFORMED.name=Malformed

属性文件应与包含枚举的顶级类位于同一目录中。

答案 1 :(得分:2)

您可以使用此功能增加计数器:

context.getCounter("PrettyGroupName", BadRecordCounters.NO_CREATION_DATE.name()).increment(1);