又是一周极限测试,这周建民哥又对我们测试了hive对大数据的导入,数据清理,数据处理,数据可视化展示。比较开心的是这次测试我在课上完成了全部阶段,第四个提交的成绩,年终期末加分两分。
本次题目如下
石家庄铁道大学2022年秋季
2020 级课堂测试试卷—数据清洗
课程名称: 大型数据库应用技术 任课教师: 王建民 考试时间: 180 分钟
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、 数据清洗:按照进行数据清洗,并将清洗后的数据导入hive数据库中。
两阶段数据清洗:
(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)hive数据库表结构:
create table data( ip string, time string , day string, traffic bigint,
type string, id string )
2、数据分析:在HIVE统计下列数据。
(1)统计最受欢迎的视频/文章的Top10访问次数 (video/article)
(2)按照地市统计最受欢迎的Top10课程 (ip)
(3)按照流量统计最受欢迎的Top10课程 (traffic)
3、数据可视化:
将统计结果倒入MySql数据库中,通过图形化展示的方式展现出来。
测试案例部分
数据处理以及数据清洗:
drop database result; create database db_result; use db_result; drop table if exists data; create table if not exists data( ip string, `time` string, day string, traffic string, type string, id string ) row format delimited fields terminated by ','; select * from data limit 100; 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 ',';
查询数据结果
第一步清洗
第二部清洗
数据分析:
drop table data_type; create table data_type as select id type, count(*) as cnt_tp from db_result.data2 group by id order by cnt_tp desc limit 10; create table data_traffic as select id, type, sum(traffic) from db_result.data2 group by type,id order by sum(traffic) desc limit 0,10; insert overwrite table data_type select count(*),type,id from data2 group by id order by count(*) desc limit 0,10; insert overwrite table data_traffic select sum(traffic),type,id from data0 group by type,id order by sum(traffic) desc limit 0,10; drop table data_ip; create table if not exists data_ip comment "ip" as select ip, type, id, count(*) as cnt_ip from data2 group by ip,type,id order by cnt_ip desc ;
数据分析截图:
数据可视化处理:
我用的是fineBI将数据以可视化表格显示,截图如下