saless.csv数据的导入,清洗,分析,导出,可视化(利用hive,sqoop,mysql工具)

题目描述

样表(sales_sample_20170310)字段说明:

day_id 日期编号;
sale_nbr 卖出方代码;
buy_nbr 买入方代码;
cnt 数量
round 金额

卖出方和买入方又分为 3 种类型:

  • 以’C’开头的表示类型为 C,代表“航空公司”,只可以卖出,不可以买入;
  • 以’O’开头的表示类型为 O,代表“代理人”,既可以卖出,也可以买入,并且允许自己卖给自己(简单来讲:每个“代理人”代码可能对应多个售票点,售票点之前有交换票的情况,所以体现为自己卖给了自己);
  • 'PAX’表示类型为 PAX,代表“旅客”,只可以买入,不可以卖出。

举例:

day_id,sale_nbr,buy_nbr,cnt,round1,C1,O1001,1,360
卖出方为 C1,类型为 C;买入方为 O1001,类型为 O
day_id,sale_nbr,buy_nbr,cnt,round1,O100,O100,4,2000
卖出方为 O100,类型为 O;买入方为 O100,类型为 O(即自己卖给自己是允许的)
day_id,sale_nbr,buy_nbr,cnt,round1,O100,PAX,4,2000
卖出方为 O100,类型为 O;买入方为 PAX,类型为 PAX

问题:

1、数据导入:
要求将样表文件中的(sales_sample_20170310)数据导入 HIVE 数据仓库中。

2、数据清洗:
要求将 day_id 一列中的数值清洗为真实的日期格式,可用字符串表示。
数据 1 对应日期 2021-09-01,依次类推,15 对应日期 2021-09-15

3、数据分析处理:

(1)统计每天各个机场的销售数量和销售金额。
要求的输出字段
day_id,sale_nbr,cnt,round
日期编号,卖出方代码,数量,金额
(2)统计每天各个代理商的销售数量和销售金额。
要求的输出字段
day_id,sale_nbr,cnt,round
日期编号,卖出方代码,数量,金额
(3)统计每天各个代理商的销售活跃度。
要求的输出字段
day_id,sale_nbr, sale_number
日期编号,卖出方代码,交易次数(买入或者卖出均算交易次数)
(4)汇总统计 9 月 1 日到 9 月 15 日之间各个代理商的销售利润。
编号,卖出方代码,买入数量,买入金额,卖出数量,卖出金额,销售利润(卖出金额-买入金额)
(5)设计分析代理商的市场地位根据市场交易次数、交易对象个数、销售机票数量、销售利润等(选做题)

4、处理结果入库:
将上述统计分析的结果数据保存到 mySQL 数据库中。

5、数据可视化展示:
利用 Echarts 将上述统计结果以图形化展示的方式展现出来:饼图、柱状图、地图、折线图等。

hadoop配置

首先安装好hadoop,我参考的b站视频:

Hadoop保姆级超详细安装教程

登录3台虚拟机(均可联网):

主机(有桌面,Firefox):
在这里插入图片描述
从机1(无桌面):
在这里插入图片描述
从机2(无桌面):
在这里插入图片描述

注:打开主机终端方式如下

在这里插入图片描述

vi /etc/hosts查看master的host文件:

在这里插入图片描述

之后 ping s1,没问题

在这里插入图片描述

可是xshell连接失败:

在这里插入图片描述

记得开启了 sshd 服务,再检查一遍,发现果然已经启动了:

在这里插入图片描述

之后发现子网ip竟然和上面的不对应,改过来就好了(记得不仅要重启虚拟机,还要重启电脑)

在这里插入图片描述

这样就可以了:

在这里插入图片描述

输入命令start-all.sh启动hadoop:

在这里插入图片描述

输入jps有:

在这里插入图片描述

通过hadoop jar ~/hadoop-2.7.7/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.7.jar 命令看一下里面example里面自带的一些程序:

在这里插入图片描述

hadoop jar ~/hadoop-2.7.7/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.7.jar pi 10 10尝试计算圆周率:

在这里插入图片描述

输入 http://master:8088/cluster,访问集群,可以看到执行的这个任务:

在这里插入图片描述

输入 http://master:50070/explorer.html#/wordcount/output,可以看到我之前操作的一些文件信息:

在这里插入图片描述

hive配置

我参考的b站视频:

【Hive教程】

hive版本要和自己的hadoop版本符合才可以:

https://hive.apache.org/downloads.html

在这里插入图片描述

https://dlcdn.apache.org/hive/hive-2.3.9/

在这里插入图片描述
启动hive

在这里插入图片描述

create table test(id int);建立一个test表

在这里插入图片描述

insert into test values(1);向test表中插入数据1

在这里插入图片描述

下载可以看到

在这里插入图片描述

mysql配置

我参考的b站视频:

尚硅谷大数据Hive教程

输入schematool -initSchema -dbType mysql -verbose初始化hive元数据库:

在这里插入图片描述

再次启动hive:

在这里插入图片描述

create table test(id int);建立一个test表;
insert into test values(1);向test表中插入数据2

在这里插入图片描述

select * from test;查询,神奇的发现1这个数据还在

在这里插入图片描述

所以我们可以认为,只要往原路径下放数据,它均可以查到,而且建表和放数据的顺序随意

我们看下mysql数据库:

在这里插入图片描述
在这里插入图片描述

完成问题1,2

在hive里面建表:

具体语法可看:Hive建表语句详解–CREATE TABLE

create table test0 (
    day_id string,
    sale_nbr  string,
    buy_nbr  string,
    cnt  int,
    round double
) 
ROW format delimited fields terminated by ',' STORED AS TEXTFILE;

结果:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

hadoop fs -put /opt/software/sales.csv /user/hive/warehouse/test0导入sales.csv文件;
select * from test0 limit 10;查看前10条记录:

在这里插入图片描述
在这里插入图片描述
然后把日期清洗成标准格式:

cast()函数用法可看:mysql cast( as int) error_Mysql SQL CAST()函数

insert overwrite table test0 
    select date_add('2021-09-00',cast(day_id as int)) as day_id,
    sale_nbr as sale_nbr,
    buy_nbr as buy_nbr,
    cnt as cnt,
    round as round 
from test0;

结果:

在这里插入图片描述

select * from test0 limit 10;
查看前10条记录:

在这里插入图片描述

zookeeper、hbase配置

借鉴:

【ZooKeeper】安装教程
hbase安装教程(操作简单可复制,含zookeeper安装)
zookeeper快速入门一:zookeeper安装与启动

zkServer.sh start

在这里插入图片描述

start-hbase.sh

在这里插入图片描述

sqoop配置

sqoop要和hadoop版本对应,这里下的1.4.7版本

http://archive.apache.org/dist/sqoop/1.4.7/

在这里插入图片描述

将文件放进Linux:

在这里插入图片描述
之后借鉴博客:

Sqoop安装与配置

vi ~/.bash_profile配置环境变量,source ~/.bash_profile使其立即生效:

在这里插入图片描述
在这里插入图片描述

vi sqoop-env.sh修改已经安装了的Hadoop组件

在这里插入图片描述
sqoop-version看版本号:

在这里插入图片描述

发现有一些警告,想要去除(但是我hbase和zookeeper都配了,hbase都识别了,zookeeper却识别不了,吐了):

借鉴:解决安装sqoop后出现一些警告提示

在这里插入图片描述

之后就可以了:

在这里插入图片描述

利用sqoop将hive数据导出到mysql

借鉴博客:

利用sqoop将数据从hive导入mysql时报错

利用sqoop将hive数据导入导出数据到mysql

列出mysql数据库中的全部数据:
sqoop list-databases --connect jdbc:mysql://master:3306/ --username root --password xxx

在这里插入图片描述

将hive中的表数据导入到mysql中(表结构就跟你hive一样就行):

在这里插入图片描述
在这里插入图片描述
之后执行sql:

bin/sqoop export 
--connect jdbc:mysql://master:3306/sales 
--username root 
--password xxx 
--table test0 
--num-mappers 1 
--export-dir /user/hive/warehouse/test0 
--input-fields-terminated-by ","

sql语句解释:

bin/sqoop export    #表示数据从 hive 复制到 mysql 中
–username root      #mysql登陆用户名
–password xxx       #登录密码table test0        #mysql中的表,即将被导入的表名称
–export-dir /user/hive/warehouse/test0  #hive中被导出的文件
–input-fields-terminated-by ","         #Hive 中被导出的文件字段的分隔符

运行结果:

在这里插入图片描述

排查原因,发现由于hive表里面没有主键,因此mysql里面不应该有主键,应该把主键去了:

在这里插入图片描述

之后执行代码:

在这里插入图片描述

结果如下:

在这里插入图片描述

对于之后的问题,做完会同步到博客上

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值