时隔许久的博客。
本次测试包括了三个阶段,清洗、处理和可视化,目的是实现把Result文件内数据进行处理、统计和展示。
阶段一 数据清洗:按照进行数据清洗,并将清洗后的数据导入hive数据库中
虽然内容要求把数据格式从——>
ip: 199.30.25.88
time: 10/Nov/2016:00:01:03 +0800
traffic: 62
文章: article/11325
视频: video/3235
变成——>
ip--->城市 city(IP)
date--> time:2016-11-10 00:01:03
day: 10
traffic:62
type:article/video
id:11325
但后面时间并没用到,所以没有进行MapReduce的清洗操作,如果需要的话,可以用map把时间格式改变。
另外需要清洗,traffic在文本文件里面多了个空格,用MapReduce或者shell文本处理来进行。(推荐后者)
然后直接导入hive里面就可以了。
阶段二 数据处理:三个统计任务
因为都是相对简单的数据统计,我就没用MapReduce的Java程序,而是用HiveQL来完成(本质SQL语言)。但之后会用MapReduce再实现一次。
- 统计最受欢迎的视频/文章的Top10访问次数 (video/article)
select id,type, count(*) as times from result group by id,type order by times DESC limit 10;
- 按照地市统计最受欢迎的Top10课程 (ip)
select b.id,b.ip,b.type,b.times from(
select a.*, row_number() over(partition by a.ip order by a.times desc) n from (select id,ip,type, count(*) times from result group by id,ip,type)a
)b where b.n<=10;
- 按照流量统计最受欢迎的Top10课程 (traffic)
select id,type,count(traffic) traffics from result group by id,type order by times desc limit 10;
写SQL语句是否方便,可以直接调用hive看到结果,而且整体结构也很清楚,我可以按照这个结构完成MapReduce的程序,会方便不少。
阶段三 数据可视化:将统计结果倒入MySql数据库中,通过图形化展示的方式展现出来
这个过程还没完成,只是用sqoop把查询结果导入mysql数据库里面了,之后把可视化用echarts做出来就行了。