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

xiaoxiao2021-02-28  63

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

转载请注明原文地址: https://www.6miu.com/read-2629195.html

最新回复(0)