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