导入:
一、将mysql数据库中的表数据导入到HDFS
表数据和格式如下:
1、首先先在hdfs中创建目录,用于导入后存放数据
hdfs dfs -mkdir /sqooptest
hdfs dfs -mkdir /sqooptest/demo1
使用sqoop import 命令将MySQL中的表导入到hdfs中
sqoop import \
--connect jdbc:mysql://nnode1:3306/stu \
--username root \
--password 123123 \
--table student \
--delete-target-dir \
--target-dir /sqooptest/demo1 \
--m 1
执行完成后,打开浏览器进入hdfs页面,可以看到数据被导入进来了
点击download下载下来看看数据是否一致
二、MySQL导入数据到hive
首先先创建hive表,然后再导入数据(注意:hive中创建的表要与mysql中的表的数据结构相同)
使用sqoop create-hive-table命令创建hive表
sqoop create-hive-table \
--connect jdbc:mysql://nnode1:3306/stu \
--username root \
--password 123123 \
--table student \
--hive-table test.student_mysql
hive中使用命令show tables;
查看表是否创建成功,使用desc student_mysql;
查看表结构。
使用sqoop import 命令将MySQL中的表数据导入到hive表中
sqoop import \
--connect jdbc:mysql://nnode1:3306/stu \
--username root \
--password 123123 \
--table student \
--delete-target-dir \
--hive-table test.student_mysql \
--hive-import \
--m 1
三、新增导入(append)
在上述mysql数据导入到hdfs中,表中原先是有数据的,如果我们后续插入数据,又该怎么导入呢?
首先先导入数据
insert into student(`name`,age,gender,telephone,email,classId)
values
("东",20,"男","13910101010","hdd@accp.com",3),
("浩",18,"男","13613309876","fh@accp.com",3),
("达",18,"男","13809090909","ljd@accp.com",1)
sqoop import \
--connect jdbc:mysql://nnode1:3306/stu \
--username root \
--password 123123 \
--table student \
--target-dir /sqooptest/demo2 \
--incremental append \
--check-column id \
--last-value 2 \
--m 1
check-column 绑定id列,last-value是2因为之前表中有两条数据。
四、新增导入(lastmodified)
首先在mysql中创建一个新表student2
create table student2(
id int,
name varchar(32),
last_mod timestamp default current_timestamp on update
current_timestamp
)
插入两条数据
insert into student2(id,name) values(1,'zhangsan'),(2,'lisi')
将表student2导入到hdfs中
sqoop import \
--connect jdbc:mysql://nnode1:3306/stu \
--username root \
--password 123123 \
--table student2 \
--delete-target-dir \
--target-dir /sqooptest/demo3 \
--m 1
接着再插入两条数据
insert into student2(id,name) values(3,'wangwu'),(4,'sunliu')
sqoop import \
--connect jdbc:mysql://nnode1:3306/stu \
--username root \
--password 123123 \
--table student2 \
--target-dir /sqooptest/demo3 \
--incremental lastmodified \
--check-column last_mod \
--last-value "2021-11-24 15:35:52" \
--append \
--m 1
导出:
新建一个teacher.txt vim teacher.txt
写两条数据
1,wan,jiaoshou,bd
2,jia,leader,bd
3,lin,jy,bd
上传到hdfs
在hdfs中创建目录hdfs dfs -mkdir /sqooptest/exportdata
,
上传teacher.txt到hdfs中hdfs dfs -put teacher.txt /sqooptest/exportdata
sqoop export \
--connect jdbc:mysql://nnode1:3306/stu \
--username root \
--password 123123 \
--table teacher \
--export-dir /sqooptest/exportdata/ \
--update-key id \
--update-mode allowinsert
另一种方式,只支持更新操作
修改一些数据,然后再到处看一下
sqoop export \
--connect jdbc:mysql://nnode1:3306/stu \
--username root \
--password 123123 \
--table teacher \
--export-dir /sqooptest/exportdata/ \
--update-key id \
--update-mode updateonly
使用命令hdfs dfs -mkdir /sqooptest/exportdata2
创建目录,
hdfs dfs -put teacher.txt /sqooptest/exportdata2
上传文件