今天还是有一点小摆烂

小谈:

        从今天开始就要更新数仓的项目了,为了后面讲的通顺,今天先讲一讲数据的导入导出。

        因为本次数仓项目的业务数据是存储在Mysql数据库中,之后需要将Mysql中的数据导入到hdfs当中,存储在hdfs之后,我们会用Hive进行分层。

Sqoop将Mysql数据导入到hdfs

        sqoop就是用来导入数据的。

首先测试Sqoop是否能够连接到数据库

如何将MySQL数据上传到hdfs上 mysql导入hdfs_hdfs

bin/sqoop list-databases 
--connect jdbc:mysql://hadoop102:3306/ 
--连接的Mysql数据库地址 
--username root 
--数据库的用户名 
--password 00000
--数据库的密码

        下面显示的数据库就是我们本地Mysql中的数据库。

        我们来看看本地Mysql中的数据库

如何将MySQL数据上传到hdfs上 mysql导入hdfs_数据库_02

 

        和命令行下面显示的东西一摸一样。

        现在开始导入到hdfs

bin/sqoop import \ 
--connect jdbc:mysql://hadoop102:3306/gmall \ --连接的数据库的名字 
--username root \ --mysql表中的用户名 
--password 000000 \ --mysql表中的密码 
--table user_info \ --Mysql中的表 
--columns id,login_name \ --要导入的列的信息 
--where "id>=10 and id<=30" \ --筛选的条件(可加可不加) 
--target-dir /test \ --要导入的hdfs的目录 
--delete-target-dir \ -- 目录存在就先删除 
--fields-terminated-by '\t' \ --分隔符 
--num-mappers 2 \ 
--指定并执行的map tasks数量 
--split-by id 并行执行,拆分数据的参考列

Tips

  1. target-dir /test 指定Mysql中的数据导入到test目录里面
  2. delete-target-dir 如果上面的目录存在,就会先将先前目录下的文件删除,刚开始的时候,原本test目录下也是同样的文件,不过日期是2021年10月份的。执行完这个命令后,是今天执行的命令,然后再看hdfs上面的目录,就已经是今天的时间了。说明会先删除我们之前的数据,然后重新创建这个目录,加载文件

        上面的日期,就是今天运行时候的日期。

        同样可以看到,这个目录下面的文件是两个文件,是因为上面设置了切片的数量为2

Hdfs数据导出到Mysql

        在将hdfs数据导出到Mysql之前,首先要创建要相应的表。

        在上面Mysql数据导入到hdfs的时候,没有向大家展示数据,下面通过上面的实验,将上面test目录下面的数据导出到Mysql中。

        如果Mysql中有数据,那么证明我们Mysql数据导入的HDfs已经成功了。

bin/sqoop export \ 
--connect jdbc:mysql://hadoop102:3306/gmall \ 
--username root \ 
--password 000000 \ 
--table user \ 
--export-dir /test \ 
--input-fields-terminated-by '\t'
  1. 创建user表
  2. 如何将MySQL数据上传到hdfs上 mysql导入hdfs_hdfs_03


 


     2.执行上面的命令语句

 3.查看数据是否已经导出到Mysql

如何将MySQL数据上传到hdfs上 mysql导入hdfs_hdfs_04

 


        从上面的表中,可以看到只有两列,这两列正是导入到hdfs上面那两列

        同时我们可以看到导入到Hdfs的时候,我们限定where "id>=10 and id <=30"

        从表中,我们也可以看到,id最多是30,最小是10。

        说明我们不仅导入成功,而且也导出成功了。


总结:

        关于数仓项目,总体的架构图明天就会出来。

        总体就是日志表的数据通过flume-kafka进行获取

        业务数据通过Mysql存储,将Mysql数据同步到hdfs目录上,然后Hive进行加载。

        今天先介绍一下sqoop是如何将数据导入导出。