我有以下从oracle导入到hbase的命令:
sqoop-import
-Dsqoop.hbase.add.row.key=true
-Dhbase.zookeeper.quorum=zk.localdomain
--verbose
--connect jdbc:oracle:thin:@127.0.0.1:1521:xe
--username admin
--password admin
--query "select * from table WHERE \$CONDITIONS"
--hbase-table hbase_table
--column-family data
--hbase-row-key ID
--hbase-create-table
--target-dir /user/sqoop/tmp_hbase_table
--null-string 'empty string'
--null-non-string '0'
--split-by ID
-m 1
代码工作正常,但带有空值的列不会导入到hbase。
我知道hbase不接受空值,但如果我正确理解文档,sqoop应该分别将它们转换为“空字符串”和“0”。
有什么神奇的系统属性我不知道吗?
我的sqoop版本是1.4.6-cdh5.10.1。
提前谢谢
1条答案
按热度按时间hujrc8aj1#
null string和null non string仅在将数据从sql导入配置单元时才受支持,而对于hbase则不受支持。检查sqoop文档以确认。https://sqoop.apache.org/docs/1.4.6/sqoopuserguide.html#_importing_data_into_hivehttps用法://sqoop.apache.org/docs/1.4.6/sqoopuserguide.html##将数据导入hbase
因此,可以使用
COALESCE
接线员。而不是使用*
使用列名和COALESCE
对于sql字段具有null
通过指定存储在hbase中时的默认值如:
希望这能解决你的问题!!