【MapReduce、Hive】课堂测试

  时隔许久的博客。


   本次测试包括了三个阶段,清洗、处理和可视化,目的是实现把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做出来就行了。

上一篇:same-security-traffic


下一篇:学习笔记之 基于Matlab的NDVI最大合成