又是一周极限测试,这周建民哥又对我们测试了hive对大数据的导入,数据清理,数据处理,数据可视化展示。比较开心的是这次测试我在课上完成了全部阶段,第四个提交的成绩,年终期末加分两分。

本次题目如下

石家庄铁道大学2022年秋季

  2020 课堂测试试卷—数据清洗

课程名称: 大型数据库应用技术  任课教师 王建民   考试时间: 180 分钟

 

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 )

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将数据以可视化表格显示,截图如下