1. 首页
  2. 大数据
  3. Sqoop教程

【Sqoop教程】(七)Sqoop export之HDFS\HIVE导出至RDBMS

其实只要掌握了import的用法,export也就分分钟的事就搞定了。因为很多也是通用的,比如–connect,–username,–password,–table,–columns,-m等,还比如上节所说的direct,options-file,job。
最大的不同可能就是–target-dir换成了–export-dir

export参数概览

[root@master bin]# ./sqoop export --help
Common arguments:
   --connect <jdbc-uri>                                     
   --help                                                     
   --password <password>                                    
   --username <username>                                     
Export control arguments:
   --columns <col,col,col...>                                 指定列
   --direct                                                   加快速度导出
   --export-dir <dir>                                         需要导出的文件路径
-m,--num-mappers <n>                                         
   --table <table-name>                                       导出到RDBMS中的哪个表中
   --update-key <key>                                         根据指定的key进行更新操作
   --update-mode <mode>                                       update的模式

案例1:HDFS文件导出到Mysql

[root@master bin]#./sqoop export --connect jdbc:mysql://master:3306/employees \
--username root --password 123456 \
--table hdfs_export \
--direct \
-m 1 \
--export-dir /user/sqoop/import/employees/part-m-00000
mysql> select * from  hdfs_export;
+------------+--------------------+
| id         | name               |
+------------+--------------------+
| d009  Custo | NULL               |
| d005  Devel | NULL               |
| d002  Finan | NULL               |
| d003  Human | NULL               |
| d001  Marke | NULL               |
| d004  Produ | NULL               |
| d006  Quali | NULL               |
| d008  Resea | NULL               |
| d007  Sales | NULL               |
+------------+--------------------+

为什么是这个鬼样子呢??因为没有指定分隔符,加上–fields-terminated-by ‘\t’ 就没问题了!

案例2:HIVE导出到Mysql

HIVE导出实际上就是HDFS文件导出,因为HIVE也是以文件的形式存储在HDFS中的。
首先找到HIVE表对应的HDFS目录,比如我这里是 /user/hive/warehouse/stu/000000_0
然后注意一下Hive默认的分隔符是\001

[root@master bin]# ./sqoop export --connect jdbc:mysql://master:3306/weblog \
--username root --password 123456 \
--table stu1 \
--export-dir /user/hive/warehouse/stu/000000_0 \
--fields-terminated-by '\001' \
-m 1

案例3:通过UPDATE方式将HIVE导出到Mysql

之前两个案例,都是全量导入Mysql的,比如mysql中有数据”2,lyl”;hive中有数据”2,bdstar” 导入后mysql中有”2,lyl 2,bdstar”。
如果你希望做更新操作,即最后mysql中数据仅是”2,bdstar”。那么就需要用到–update-key

[root@master bin]# ./sqoop export --connect jdbc:mysql://master:3306/weblog \
--username root --password 123456 --table stu1 \
--export-dir /user/test.txt \
--fields-terminated-by ',' \
--update-key id -m 1

注意:如果使用–update-mode allowinsert那么效果和案例1 2 是一样的 全量插入

BDStar原创文章。发布者:Liuyanling,转载请注明出处:http://bigdata-star.com/archives/983

发表评论

登录后才能评论

联系我们

562373081

在线咨询:点击这里给我发消息

邮件:562373081@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

QR code