4.8 export 数据导出
4.8.1 hdfs数据导出到MySQL中
hdfs准备如下数据,放到/data/xinniu目录下
101|bob|manager|50000|yanfa
102|jerry|java |40000|yanfa
103|rose|php|30000|yanfa
104|jim|php|30000|yanfa
105|tom|bigdata|50000|yanfa
hadoop fs -put student /data/xinniu/
sqoop将hdfs数据导入到mysql表中,不会自动创建表,所以需要我们在mysql中,根据hdfs文件中的数据,创建对应的表
CREATE TABLE emp (
id INT NOT NULL PRIMARY KEY,
name VARCHAR(20),
deg VARCHAR(20),
salary INT,
dept VARCHAR(10));
以下命令用于hdfs数据(位于HDFS上的/data/xinniu/的文件)导出到mysql中sqoop_db库下的emp表
sqoop export \
--connect jdbc:mysql://nn1:3306/sqoop_db"?useUnicode=true&characterEncoding=UTF-8" \
--username root \
--password 12345678 \
--export-dir /data/xinniu/data.txt \
--table emp \
--num-mappers 1 \
--input-fields-terminated-by '|'
验证
select * from emp;
4.8.2 hive表数据导出到mysql中
sqoop的export命令支持 insert、update到关系型数据库,但是不支持merge;
hive表导入mysql数据库insert案例
查看hive中hainiu.student表数据
将数据导出到mysql中
CREATE TABLE student (
id INT NOT NULL PRIMARY KEY,
name VARCHAR(20),
age INT);
sqoop export \
--connect jdbc:mysql://nn1:3306/sqoop_db"?useUnicode=true&characterEncoding=UTF-8" \
--username root \
--password 12345678 \
--table student \
--export-dir /hive/warehouse/hainiu.db/student \
--num-mappers 1 \
--fields-terminated-by '\t'
结果:
hive表导入mysql数据库update案例
更新hive的数据
重新将hive表中的数据导入到mysql中并按照id进行更新
sqoop export \
--connect jdbc:mysql://nn1:3306/sqoop_db"?useUnicode=true&characterEncoding=UTF-8" \
--username root \
--password 12345678 \
--table student \
--export-dir /hive/warehouse/hainiu.db/student \
--update-key id \
--num-mappers 1 \
--fields-terminated-by '\t'
查看结果:
niu.db/student
–update-key id
–num-mappers 1
–fields-terminated-by ‘\t’
查看结果:
![file](https://img-blog.csdnimg.cn/img_convert/941606b1fa684da483f49d8bb98ae59d.png)