Sqoop问题:MySQL导入HBase,预留空值字段的处理

结论:从mysql导入到HBase中,预留字段不会显示,但存在

---------------------------------------------------MySQL 导入 HBase---------------------------------------------------

上图是有预留字段的数据表

MySQL 导入 HBase

bin/sqoop import \
-Dorg.apache.sqoop.splitter.allow_text_splitter=true \
--connect jdbc:mysql://hadoop104:3306/company \
--username root \
--password 000000 \
--table staff \
--hbase-table staff \
--column-family info \
--hbase-row-key id \
--null-string '\\N' \
--null-non-string '\\N'

结果:


结果显示:没有Null这个字段,那它是否存在呢?请继续往下看

---------------------------------------------------MySQL 导入 HBase---------------------------------------------------

实验:MySQL的预留字段中为空,不是null,那么会怎么显示呢?


Sqoop的语句同上

结果,注意看第一行,也是空,然后我又测试了在空格里插入内容,同理,里面也是内容。由此,我猜测,这一行预留字段他是存在的只是不显示。


查看表结构



然后我又测试如果我把MySQL中的数据导入到Hive或者HDFS,它会怎么显示呢?

---------------------------------------------------MySQL 导入 Hive---------------------------------------------------

bin/sqoop import \
-Dorg.apache.sqoop.splitter.allow_text_splitter=true \
--connect jdbc:mysql://hadoop104:3306/company \
--username root \
--password 000000 \
--table staff \
--num-mappers 1 \
--hive-import \
--fields-terminated-by "\t" \
--hive-overwrite \
--hive-table staff \
--null-string '\\N' \
--null-non-string '\\N'

如果Hive没有表,它会自动创建


结果显示:Hive中有Null这个预留字段

---------------------------------------------------MySQL 导入 HDFS---------------------------------------------------

bin/sqoop import \
--connect jdbc:mysql://hadoop104:3306/company \
--username root \
--password 000000 \
--table staff \
--target-dir /user/company \
--delete-target-dir \
--num-mappers 1 \
--fields-terminated-by "\t"


结果:HDFS中有预留字段这个值


我的结果猜想能实现的方法

猜想:MySQL导入HBase虽然没显示,但是有这个字段的。

实现:使用Sqoop的查询导入,在AAA那一列中,插入一列数据即可。我还没去实现到,给自己留的一个小坑~解决了会告诉大家,如果有已经解决的朋友~可以留言,不胜感激~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值