sqoop导出数据实操

导出数据

在 Sqoop 中,“导出”概念指:从大数据集群(HDFS,HIVE,HBASE)向非大数据集群(RDBMS)中传输数据,叫做:导出,

使用 export 关键字。

导出到 RDBMS 的时候, 目标表必须依据在数据库中已经存在.

HIVE/HDFS 到 RDBMS

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

注意:

  • mysql 中的 staff 表必须提前存在, 否则会抛出异常

  • 默认情况下是在表中增加新行, 这样会引起主键冲突, 只要有一行插入失败, 剩下的都会插入失败.


使用--update-key 参数: 添加上这个参数之后, 所有的操作变成了update....操作.

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

但是, 如果原来表中不存在的 id 则不会插入进去, 只会更新.


再添加参数 --update-mode allowinsert, 表示存在的就更新, 不存在的就插入.

sqoop export \
--connect jdbc:mysql://hadoop201:3306/company \
--username root \
--password aaa \
--table staff \
--num-mappers 1 \
--export-dir /user/hive/warehouse/staff_hive \
--update-key id \
--update-mode allowinsert \
--input-fields-terminated-by "\t"

HBase 导出到 RDBMS

到目前为止, Sqoop 还不支持直接从 HBase 导出数据到 Mysql. 只能先 Hive 表和 HBase 表关联, 然后再从 Hive 表导出到 Mysql. 比较经过 Hive 中间转换.

HBase->Hive外部(关联创建的)->Hive 内部表(通过查询的方式插入数据)->sqoop->Mysql

说明:

  • 为啥需要两张 Hive 作为中间表: 因为和 HBase 整合的时候创建的 Hive 表中没有存储数据, 数据是存储在 HBase 中, 第二张 Hive 表中才有数据.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值