今天做的是MongDB日志分析,今天成功将数据导入到hive并进行一系列的数据清洗,并导入到mysql,最终未完成可视化操作,计划明天完成,下面是要求部分:
Result文件数据说明:
Ip:106.39.41.166,(城市)
Date:10/Nov/2016:00:01:02 +0800,(日期)
Day:10,(天数)
Traffic: 54 ,(流量)
Type: video,(类型:视频video或文章article)
Id: 8701(视频或者文章的id)
测试要求:
1、 数据清洗:按照进行数据清洗,并将清洗后的数据导入MongDB数据库中。
两阶段数据清洗:
(1)第一阶段:把需要的信息从原始日志中提取出来
ip: 199.30.25.88
time: 10/Nov/2016:00:01:03 +0800
traffic: 62
文章: article/11325
视频: video/3235
(2)第二阶段:根据提取出来的信息做精细化操作
ip--->城市 city(IP)
date--> time:2016-11-10 00:01:03
day: 10
traffic:62
type:article/video
id:11325
(3)MongDB数据库表结构:
create table data( ip string, time string , day string, traffic bigint,
type string, id string )
2、数据处理:
每天·统计最受欢迎的视频/文章的Top10访问次数 (video/article)
·按照地市统计最受欢迎的Top10课程 (ip)
·按照流量统计最受欢迎的Top10课程 (traffic)
3、数据可视化:将统计结果倒入MySql数据库中,通过图形化展示的方式展现出来。
下面是操作流程和步骤:
创建result表
create table result (ip String,data String,day String,traffic String,type String,id String) ROW format delimited fields terminated by ',' STORED AS TEXTFILE;
导入数据
load data local inpath '/opt/software/result.txt' into table result;
创建result1表用于初步筛选
create table result1(ip String,data String,traffic String,type String,id String) ROW format delimited fields terminated by ',' STORED AS TEXTFILE;
把type="video"的数据导入result1
insert into table result1(ip,data,traffic,type,id) (select ip,data,traffic,type,id from result where type="video");
创建result2
create table result2(ip String,data String,traffic String,type String,id String) ROW format delimited fields terminated by ',' STORED AS TEXTFILE;
把type="article"的数据导入表
insert into table result2(ip,data,traffic,type,id) (select ip,data,traffic,type,id from result where type="article");
清洗result1
insert overwrite table result1 select ip as ip,sumbstring(data,8,length(data)-7) as data,traffic as traffic,type as type,id as id from result1;
清洗result2
insert overwrite table result2 select ip as ip,substring(data,8,length(data)-7) as data,traffic as traffic,type as type,id as id from result2;
创建result3表用于进一步清洗
create table result3 (ip String,data String,day String,traffic String,type String,id String) ROW format delimited fields terminated by ',' STORED AS TEXTFILE;
把result中数据导入result3
insert into table result3(ip,data,day,traffic,type,id) (select ip,data,day,traffic,type,id from result where type="article"or type="video");
清洗data数据
insert overwrite table result3 select ip as ip,concat("2016-11-10 ",substring(data,11,length(data)-10)) as data,day as day,traffic as traffic,type as type,id as id from result3;
创建result4表用于数据清洗
create table result4 (ip String,data String,day String,traffic String,type String,id String) ROW format delimited fields terminated by ',' STORED AS TEXTFILE;
导入数据
insert into table result4(ip,data,day,traffic,type,id) (select ip,data,day,traffic,type,id from result3);
select id,count(id)from result3 group by id order by count(id) desc limit 10;
截图:
select ip,count(ip)from result3 group by ip order by count(ip) desc limit 10;
导入到mysql