计数器应用
计数器应用(多线程情况下,无法使用debug调试代码,只能通过计数器的方式来调节)打log和debug是解决问题的重要手段Hadoop为每个作业维护若干内置计数器,以描述多项指标。例如,某些计数器记录已处理的字节数和记录数,使用户可监控已处理的输入数据量和已产生的输出数据量。1)API(1)采用枚举的方式统计计数enum MyCounter{MALFORORMED,NORMAL}//对枚举定义的自
·
计数器应用(多线程情况下,无法使用debug调试代码,只能通过计数器的方式来调节)
打log和debug是解决问题的重要手段
Hadoop为每个作业维护若干内置计数器,以描述多项指标。例如,某些计数器记录已处理的字节数和记录数,使用户可监控已处理的输入数据量和已产生的输出数据量。
1)API
(1)采用枚举的方式统计计数
enum MyCounter{MALFORORMED,NORMAL}
//对枚举定义的自定义计数器加1
context.getCounter(MyCounter.MALFORORMED).increment(1);
(2)采用计数器组、计数器名称的方式统计
context.getCounter("counterGroup", "countera").increment(1);
组名和计数器名称随便起,但最好有意义。
(3)计数结果在程序运行后的控制台上查看。
2)案例实操
详见 日志清洗(数据清洗)
private boolean paeseLog(String line, Mapper<LongWritable, Text, Text, NullWritable>.Context context) {
String[] words=line.split(" ");
if(words.length>11) {
context.getCounter("logmap", "parse_true").increment(1);
return true;
}else {
context.getCounter("logmap", "parse_false").increment(1);
return false;
}
}
在控制台查看
更多推荐
已为社区贡献2条内容
所有评论(0)