在给的 http.log 日志文件中,是电信运营商记录用户上网访问某些网站行为的日志记录数据,一条数据中有多个字段用空格分隔。
例如: “18611132889 http://v.baidu.com/tv 20 5000”
是一条上网行为,第一个字段代表手机号码,第二个字段代表请求网站的 URL ,第三个字段代表请求发送的数据即上行流量( 20
字节),第四个字段代表服务器响应给用户的流量即下行流量( 5000 字节)。
数据
![](https://img-
blog.csdn.net/20180501171359247?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM3OTMzMDE4/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
手机段规则
![](https://img-
blog.csdn.net/20180501171409673?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM3OTMzMDE4/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
需求:
-
计算出用户上网流量总流量(上行 + 下行)最高的的网站 Top3 ,
-
根据给的的手机号段归属地规则,计算出总流量最高的省份 Top3
-
根据给的的手机号段运营商规则,计算出总流量最高的运营商 Top3
步骤分析:
1 将手机号规则信息放在 Map 集合中,以手机号为 key ,手机数据实体为 value 。
2 加载 http 日志数据,获取 url 和手机号数据( url 需要简单清洗)
3 处理 url 数据,统计流量
4 根据 http 日志文件中的手机号匹配获取对应的区域运营商数据,进行统计
知识点:
集合 list 和 map 存储数据特点
IO 切割
1.1. ** 创建两个实体 bean 来存储手机号规则数据和上网数据 **
HttpBean pojo
** private ** String phone ; // 手机号
** private ** String url ; // 请求的 _ url _
** private ** ** int ** upData ; // 上行流量
** private ** ** int ** lowData ; // 下行流量
TelBean
** private ** String prefix ;
** private ** String phone ;
** private ** String province ;
** private ** String city ;
** private ** String isp ;
** private ** String postCode ;
** private ** String cityCode ;
** private ** String areaCode ;