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):

saless.csv数据的导入,清洗,分析,导出,可视化(利用hive,sqoop,mysql工具)
从机1(无桌面):
saless.csv数据的导入,清洗,分析,导出,可视化(利用hive,sqoop,mysql工具)
从机2(无桌面):
saless.csv数据的导入,清洗,分析,导出,可视化(利用hive,sqoop,mysql工具)

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

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

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

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

之后 ping s1,没问题

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

可是xshell连接失败:

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

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

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

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

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

这样就可以了:

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

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

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

输入 jps有:

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

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

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

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

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

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

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

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

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

; hive配置

我参考的b站视频:

【Hive教程】

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

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

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

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

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

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

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

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

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

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

下载可以看到

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

; mysql配置

我参考的b站视频:

尚硅谷大数据Hive教程

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

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

再次启动hive:

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

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

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

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

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

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

我们看下mysql数据库:

saless.csv数据的导入,清洗,分析,导出,可视化(利用hive,sqoop,mysql工具)
saless.csv数据的导入,清洗,分析,导出,可视化(利用hive,sqoop,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;

结果:

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

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

saless.csv数据的导入,清洗,分析,导出,可视化(利用hive,sqoop,mysql工具)
saless.csv数据的导入,清洗,分析,导出,可视化(利用hive,sqoop,mysql工具)
然后把日期清洗成标准格式:

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;

结果:

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

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

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

zookeeper、hbase配置

借鉴:

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

zkServer.sh start

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

start-hbase.sh

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

; sqoop配置

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

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

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

将文件放进Linux:

saless.csv数据的导入,清洗,分析,导出,可视化(利用hive,sqoop,mysql工具)
之后借鉴博客:

Sqoop安装与配置

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

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

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

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

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

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

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

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

之后就可以了:

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

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

借鉴博客:

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

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

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

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

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

saless.csv数据的导入,清洗,分析,导出,可视化(利用hive,sqoop,mysql工具)
saless.csv数据的导入,清洗,分析,导出,可视化(利用hive,sqoop,mysql工具)
之后执行sql:
bin/sqoop export

sql语句解释:

bin/sqoop export
–username root
–password xxx
–table test0
–export-dir /user/hive/warehouse/test0
–input-fields-terminated-by ","

运行结果:

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

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

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

之后执行代码:

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

结果如下:

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

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

Original: https://blog.csdn.net/qq_45550375/article/details/125748097
Author: 阅读,动手
Title: saless.csv数据的导入,清洗,分析,导出,可视化(利用hive,sqoop,mysql工具)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/817891/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球