# jike-task-01 **Repository Path**: osky1993/jike-task-01 ## Basic Information - **Project Name**: jike-task-01 - **Description**: 极客时间大数据训练营-作业01 - **Primary Language**: Java - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-07-18 - **Last Updated**: 2022-07-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # jike-task-01 ### 介绍 **极客时间大数据训练营-作业01-MapReduce编程** ### 1.需求: **统计每一个手机号耗费的总上行流量、下行流量、总流量** ### 2.数据准备: 1. 输入数据格式: 时间戳、电话号码、基站的物理地址、访问网址的ip、网站域名、数据包、接包数、上行/传流量、下行/载流量、响应码 2. 最终输出的数据格式: 手机号码 上行流量 下行流量 总流量 ### 3.基本思路: #### 1. Map阶段: >1. 读取一行数据,切分字段 >2. 抽取手机号、上行流量、下行流量 >3. 以手机号为key,bean对象为value输出,即context.write(手机号,bean); #### 2. Reduce阶段: >1. 累加上行流量和下行流量得到总流量。 >2. 实现自定义的bean来封装流量信息,并将bean作为map输出的key来传输 >3. MR程序在处理数据的过程中会对数据排序(map输出的kv对传输到reduce之前,会排序),排序的依据是map输出的key 所以,我们如果要实现自己需要的排序规则,则可以考虑将排序因素放到key中,让key实现接口:WritableComparable。 然后重写key的compareTo方法。 ### 4. 实现参考 *https://blog.csdn.net/aflyingcat520/article/details/105960669/?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_title-0&spm=1001.2101.3001.4242* ### 5. 运行结果 + ResourceManager结果截图 > ![](https://i.loli.net/2021/07/18/cKXjiCLAhnz12lN.png) + 统计结果 > ![](https://i.loli.net/2021/07/18/2jdZtviGmDux7Qk.png)