今日总结10.12

04.大型数据库应用技术课堂测试05-日志数据分析

 

Result文件数据说明:

 

Ip106.39.41.166,(城市)

 

Date10/Nov/2016:00:01:02 +0800,(日期)

 

Day10,(天数)

 

Traffic: 54 ,(流量)

 

Type: video,(类型:视频video或文章article

 

Id: 8701(视频或者文章的id

 

测试要求:

 

1、 数据清洗:按照进行数据清洗,并将清洗后的数据导入hive数据库中

 

两阶段数据清洗:

 

1)第一阶段:把需要的信息从原始日志中提取出来

 

ip:    199.30.25.88

 

time:  10/Nov/2016:00:01:03 +0800

 

traffic:  62

 

文章: article/11325

 

视频: video/3235

 

2)第二阶段:根据提取出来的信息做精细化操作

 

ip--->城市 cityIP

 

date--> time:2016-11-10 00:01:03

 

day: 10

 

traffic:62

 

type:article/video

 

id:11325

 

3hive数据库表结构:

 

create table data(  ip string,  time string , day string, traffic bigint,

 

type string, id   string )

 

 

create table if not exists data(
    ip string,
    `time` string,
    day string,
    traffic bigint,
    type string,
    id string
)
 row format delimited fields terminated by ',';
load data inpath '/data/result.csv' into table data;

create table if not exists data1
comment "数据清洗一 "
as
select
ip,
`time`,
traffic,
type,
id
from data;

select * from data1 limit 100;

create table if not exists data2(
ip string,
`time` string,
day string,
traffic bigint,
type string,
id string
)
row format delimited fields terminated by ',';

INSERT INTO data2 (ip, `time`, day, traffic, type, id)
SELECT
ip,
FROM_UNIXTIME(UNIX_TIMESTAMP(SUBSTRING_INDEX(`time`, ' ', 1), 'dd/MMM/yyyy:HH:mm:ss'), 'yyyy-MM-dd HH:mm:ss') AS `time`,
day,
CAST(traffic AS BIGINT),
type,
id
FROM
data;

 

 

2数据分析:在HIVE统计下列数据。

 

1统计最受欢迎的视频/文章的Top10访问次数 (video/article

 

2按照地市统计最受欢迎的Top10课程 (ip

 

3按照流量统计最受欢迎的Top10课程 (traffic

 

 

 

-- 统计最受欢迎的视频/文章的Top10访问次数
create table data_type(id string,type string,cnt_tp int) row format delimited fields terminated by ',';

insert overwrite table data_type select id,type,count(*) from data2 group by type,id order by count(*) desc limit 10;
-- 按照地市统计最受欢迎的Top10课程 (ip)

create table data_ip(ip string,type string,id string,cnt_ip int) row format delimited fields terminated by ',';
insert overwrite table data_ip select ip,type,id,count(*) from data2 group by ip,type,id order by count(*) desc limit 10;

-- 按照流量统计最受欢迎的Top10课程 (traffic)
create table data_traffic(id string,type string,liulan int) row format delimited fields terminated by ',';
insert overwrite table data_traffic select id,type,sum(traffic) from data2 group by type,id order by sum(traffic) desc limit 10;

然后将hive中的这三个表导入到mysql数据库中就行,下一篇就是我做的前端可视化展示. 

posted @ 2023-10-12 22:21  庞司令  阅读(12)  评论(0)    收藏  举报