Hadoop中自定义计数器的替代文本



我定义了以下计数器

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。

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

权威指南有一节叫做"可读计数器名称",它处理这个主题。

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

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

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

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

属性文件应该与包含枚举的顶级类在同一个目录下

您可以使用这个函数来增加计数器:

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

相关内容

  • 没有找到相关文章

最新更新