使用sqoop实现HDFS和Mysql 的互导

目录
简介

环境

Mysql上传到HDFS实例

HDFS上数据上传到Mysql实例

简介
Sqoop是一个用来将Hadoop和关系型数据库中的数据相互转移的工具,可以将一个关系型数据库(例如 : MySQL ,Oracle ,Postgres等)中的数据导入到Hadoop的HDFS中,也可以将HDFS的数据导入到关系型数据库中。

环境
Sqoop-1.4.7

mysql-5.7.22

hadoop-2.7.6

Ubuntu16.04

Mysql上传到HDFS实例
小文是使用的是文本文档首先我们得先把文本文档上传到Mysql中

第一步:上传本地文本文档到Mysql中

在Mysql中创建一个表用来存放本地文档,输入命令
 

create table test1(
ip varchar(100) not null,
time varchar(100) not null,
url varchar(100) not null);

将本地的test.txt文件上传到Mysql中,输入命令

load data infile “~/Downloads/test.txt” into table test1(ip,time,url);

上传完成后,查看Mysql表中的前10条数据,如图所示:

样本地文档就上传到Mysql中成功

第二步:将Mysql中的数据上传到HDFS中,输入命令

sqoop import -connect jdbc:mysql://localhost:3306/test --username root --password 123456 -table test1 -m 1

执行完之后我们可以在HDFS上查看导出数据,输入命令

hadoop dfs -test /user/hadoop/test1/part-m-00000

显示结果如图所示:

这样就完成了运用sqoop把Mysql中的数据导出到HDFS上

HDFS上数据上传到Mysql实例
在导出前需要先创建导出表的结构,如果导出的表在数据表中不存在则报错;如果重复导出数据多次,表中的数据则会重复。

第一步:准备导出表

在Mysql 数据库中创建要导出表,我们直接根据test1表创建导出表的结构即可,命令如下:
 

create table test2 as select * from test1 where 1=2;
第二步:运用sqoop将HDFS上数据导入到Mysql中,命令如下:

sqoop export --connect jdbc:mysql://localhost:3306/test --username root --password 123456 --table test2  --export-dir /user/hadoop/test1/part-m-00000 -m 1
第三步:在Mysql中查询被导出的数据,如图所示:
 

这样就完成了运用sqoop把HDFS上数据导入到Mysql中。

猜你喜欢

转载自blog.csdn.net/u011500419/article/details/89481907