结论:从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那一列中,插入一列数据即可。我还没去实现到,给自己留的一个小坑~解决了会告诉大家,如果有已经解决的朋友~可以留言,不胜感激~