计数器应用(多线程情况下,无法使用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;
		}
	}

在控制台查看

 

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐