需求:
对日志数据中的上下行流量信息汇总,并输出按照总流量倒序排序的结果
数据如下:电话号-上行流量-下行流量(下面是模拟的数据)
13823434356 20 3015844021203 30 40
18688788797 40 50
15844939284 50 60
17646566767 90 70
18688988989 10 20
11385768543 40 44
分析:
基本思路:实现自定义的bean来封装流量信息,并将bean作为map输出的key来传输
MR程序在处理数据的过程中会对数据排序(map输出的kv对传输到reduce之前,会排序),排序的依据是map输出的key
所以,我们如果要实现自己需要的排序规则,则可以考虑将排序因素放到key中,让key实现接口:WritableComparable
然后重写key的compareTo方法。
最后在reduce中把传入的maperr处理好的数据的key,value进行调换,这样输出结果就是手机号在前,其他的在后了。
实现:
1、eclipes程序,准备环境(略):