代码地址:https://github.com/meihuakaile/mr_test
map实现
1 | package com.mr.wordcount; |
reduce实现
1 | package com.mr.wordcount; |
job
1 | package com.mr.wordcount; |
计数器
计数器参考:https://www.cnblogs.com/codeOfLife/p/5521356.html
MapReduce 的计数器Counter用以观察mr执行的详细信息,如进度等。mr自带了很多计数器,如job个数、map个数、
map输入行数等(可以参看上面链接)。
我主要用的是自定义计数器,计数器从另一方便面来说就是日志。特别是在我们记录无效数据时特别有用(比如解析多个日志文件时,统计解析失败的条数。毕竟,如果数据量很大,不能就throw掉不管吧)。
自定义计数器经常用的几个方法:
1、定义计数器
1)枚举声明计数器
1 | // 自定义枚举变量Enum |
2)自定义计数器
1 | // 自己命名groupName和counterName |
2、为计数器赋值
1)初始化计数器
1 | counter.setValue(long value);// 设置初始值 |
2)计数器自增counter.increment(long incr);// 增加计数
3、获取计数器的值
1) 获取自定义/枚举计数器的值
1 | Counters counters = job.getCounters(); |
2) 获取内置计数器的值
1 | job.waitForCompletion(true); |
3) 获取所有计数器的值
1 | Counters counters = job.getCounters(); |