我定义了以下计数器
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);