首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Sqoop不将空值导入HBase。

Sqoop不将空值导入HBase。
EN

Stack Overflow用户
提问于 2017-11-09 14:58:28
回答 1查看 524关注 0票数 0

我有以下命令从Oracle导入到Hbase:

代码语言:javascript
复制
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

代码工作正常,但是没有将带有NULL的列导入到HBase中。

我知道HBase不接受空值,但是如果我正确地理解了文档,Sqoop应该分别以“空字符串”和"0“转换它们。

有什么魔法系统我丢失了吗?

我在1.4.6-cdh5.10.1中的Sqoop版本。

提前感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-19 10:29:28

只有将数据从SQL导入到Hive而不是HBase时才支持空字符串和空-非字符串。检查SQOOP文档以获得确认。hive hbase

因此,利用COALESCE算子可以解决上述问题。不要使用*,而是对那些SQL字段具有null值的列使用列名和COALESCE,方法是在存储在HBase中时指定默认值

例:

代码语言:javascript
复制
   COALESCE(user_name,'xyz') as user_name, \
   COALESCE(password,'123') as password, \
   COALESCE(created_date, '9999-12-31 00:00:00.0000000') as created_date, \
   COALESCE(modified_date,'9999-12-31 00:00:00.0000000') as modified_date, \
   COALESCE(last_login_date,'9999-12-31 00:00:00.0000000') as lastlogin, \
   COALESCE(email_id,'0') as email_id, \

希望这能解决你的问题!!

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47205013

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档