0
点赞
收藏
分享

微信扫一扫

Sqoop数据导出

数据导出

将数据从HDFS导出到RDBMS数据库

导出前,目标表必须存在于目标数据库中

mysql表不存在是不会自动创建的

  • 默认操作是从将文件中的数据使用INSERT语句插入到表中
  • 更新模式下,是生成UPDATE语句更新表数据

语法

以下是export命令语法

$ sqoop export (generic-args) (export-args)

表示数据存放的地址

hdfs导入到mysql

数据是在HDFS 中​​/user/root/emp_conn​​目录下存在part-m-00000文件中。所述part-m-00000如下:

1201,2356742,gopal@tp.com
1202,1661663,manisha@tp.com
1203,8887776,khalil@ac.com
1204,9988774,prasanth@ac.com
1205,1231231,kranthi@tp.com
  1. 首先需要手动创建mysql中的目标表
use userdb;
CREATE TABLE emp_conn_from_hdfs(
id INT,
phno VARCHAR(20),
email VARCHAR(20)
);
  1. 然后执行导出命令
sqoop export \
--connect jdbc:mysql://master:3306/userdb \
--username root \
--password root \
--table emp_conn_from_hdfs \
--export-dir /user/root/emp_conn \
--m 1
  1. 验证表mysql命令行
select * from emp_conn_from_hdfs;

如果给定的数据存储成功,那么可以找到数据在如下的emp_conn_from_hdfs表

hive导入到mysql

sqoop export \
--connect jdbc:mysql://master:3306/userdb \
--username root \
--password root \
--table staff \
--num-mappers 1 \
--export-dir /user/root/staff \
--input-fields-terminated-by "\t";

​--input-fields-terminated-by "\t"​​​表示hive中原本数据分割符是​​\t​

编写脚本

job_hdfs2mysql.opt

export 
--connect
jdbc:mysql://master:3306/company
--username
root
--password
root
--table
staff
--num-mappers
1
--export-dir
/user/hive/warehouse/staff_hive
--input-fields-terminated-by
"\t"

脚本中一个命令或一个参数就成为一行,不要加​​\​

执行脚本

sqoop --options-file job_hdfs2mysql.opt
举报

相关推荐

0 条评论