hive测试——HIVE数据分析
测试使用虚拟机中的hive
环境:虚拟机+jdk+hadoop+hive+mysql
题目:
1、数据导入:
要求将样表文件中的(sales_sample_20170310)数据导入HIVE数据仓库中。
2、数据清洗:
要求将day_id一列中的数值清洗为真实的日期格式,可用字符串表示。
数据1对应日期2022-10-01,依次类推,15对应日期2022-10-15
3、数据分析处理:
(1)统计每天各个机场的销售数量和销售金额。
要求的输出字段
day_id,sale_nbr,,cnt,round
日期编号,卖出方代码,数量,金额
(2)统计每天各个代理商的销售数量和销售金额。
要求的输出字段
day_id,sale_nbr,,cnt,round
日期编号,卖出方代码,数量,金额
(3)统计每天各个代理商的销售活跃度。
要求的输出字段
day_id,sale_nbr, sale_number
日期编号,卖出方代码,交易次数(买入或者卖出均算交易次数)
(4)汇总统计10月1日到10月15日之间各个代理商的销售利润。
编号,卖出方代码,买入数量,买入金额,卖出数量,卖出金额,销售利润(卖出金额-买入金额)
4、处理结果入库:
将上述统计分析的结果数据保存到mySQL数据库中。
5、数据可视化展示:
利用Echarts将上述统计结果以图形化展示的方式展现出来:饼图、柱状图、地图、折线图等。
1、数据导入
#建表
Create table test2(day_id varchar(30), sale_nbr varchar(30), buy_nbr varchar(30), cnt varchar(30), round varchar(30)) row format serde 'org.apache.hadoop.hive.serde2.OpenCSVSerde' WITH SERDEPROPERTIES
(
"separatorChar"=","
)
STORED AS TEXTFILE;
#数据导入
load data local inpath '/export/software/sales.csv' into table test2;
2、数据清洗
#重新建一个表
Create table test3(day_id varchar(30), sale_nbr varchar(30), buy_nbr varchar(30), cnt varchar(30), round varchar(30)) row format serde 'org.apache.hadoop.hive.serde2.OpenCSVSerde' WITH SERDEPROPERTIES
(
"separatorChar"=","
)
STORED AS TEXTFILE;
#导入清洗后的数据
insert overwrite table test3 select date_add('2022-10-00',cast(day_id AS INT)) as day_id,sale_nbr,buy_nbr,cnt,round from test2;
3-1、统计每天各个机场的销售数量和销售金额
#建表
Create table text3_1(day_id varchar(30), sale_nbr varchar(30), cnt varchar(30), round varchar(30)) row format serde 'org.apache.hadoop.hive.serde2.OpenCSVSerde' WITH SERDEPROPERTIES
(
"separatorChar"=","
)
STORED AS TEXTFILE;
#数据导入
insert overwrite table text3_1
SELECT
day_id,
sale_nbr,
SUM(cnt),
SUM(round)
FROM
test3
WHERE sale_nbr LIKE 'C%'
GROUP BY day_id,sale_nbr;
3-2、统计每天各个代理商的销售数量和销售金额
#建表
Create table text3_2(day_id varchar(30), sale_nbr varchar(30), cnt varchar(30), round varchar(30)) row format serde 'org.apache.hadoop.hive.serde2.OpenCSVSerde' WITH SERDEPROPERTIES
(
"separatorChar"=","
)
STORED AS TEXTFILE;
#数据导入
insert overwrite table text3_2
SELECT
day_id,
sale_nbr,
SUM(cnt),
SUM(round)
FROM
test3
WHERE sale_nbr LIKE "O%"
GROUP BY day_id,sale_nbr;
3-3、统计每天各个代理商的销售活跃度
#建表
Create table text3_3(day_id varchar(30), sale_nbr varchar(30), sale_number varchar(30)) row format serde 'org.apache.hadoop.hive.serde2.OpenCSVSerde' WITH SERDEPROPERTIES
(
"separatorChar"=","
)
STORED AS TEXTFILE;
#导入数据
insert overwrite table text3_3
SELECT
day_id,
sale_nbr,
COUNT(sale_nbr)
FROM
test3
WHERE sale_nbr LIKE "O%"
GROUP BY day_id,sale_nbr;
3-4、汇总统计10月1日到10月15日之间各个代理商的销售利润(先将数据导入,然后重新建表,取出部分数据)
create table daiout as select day_id as day_id,sale_nbr as sale_nbr,sum(cnt)as cnt,sum(round)as round from test3 where sale_nbr like 'O%' group by day_id,sale_nbr;create
table
daiin
as
select
day_id
as
day_id,buy_nbr
as
buy_nbr,
sum
(cnt)
as
cnt,
sum
(round)
as
round
from
test3
where
buy_nbr
like
'O%'
group
by
day_id,buy_nbr;
create table profit(day_id varchar(200),sale_nbr VARCHAR(200),incnt double,inround double,outcnt double,outround double,li double);create
table
daili
as
select
daiin.day_id
as
day_id,daiout.sale_nbr
as
sale_nbr,daiin.cnt
as
incnt,daiin.round
as
inround,daiout.cnt
as
outcnt,daiout.round
as
outround,daiout.round-daiin.round
as
li
from
daiin
join
daiout
on
(daiin.buy_nbr=daiout.sale_nbr);
insert overwrite table profit select * from daili where day_id between '2022-10-01' and '2022-10-15';
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
2021-10-08 Java学习十七