Sqoop 不向 HBase 导入 NULL 值
Sqoop does not import NULL values to HBase
我有以下从 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
代码运行良好,但没有将包含 NULL 的列导入到 HBase。
我知道 HBase 不接受空值,但如果我正确理解文档,Sqoop 应该将它们分别转换为 "empty string" 和“0”。
有什么神奇的系统吗属性我不见了?
我的Sqoop版本是1.4.6-cdh5.10.1.
提前致谢
null-string 和 null-non-string 是仅在将数据从 SQL 导入 Hive 而不是 HBase 时支持的参数。检查 SQOOP 文档以进行确认。
https://sqoop.apache.org/docs/1.4.6/SqoopUserGuide.html#_importing_data_into_hive
https://sqoop.apache.org/docs/1.4.6/SqoopUserGuide.html#_importing_data_into_hbase
因此可以使用COALESCE
运算符解决上述问题。而不是使用 *
使用列名,并在 SQL 字段具有 null
值的那些列中使用 COALESCE
,方法是在存储在 HBase
中时指定默认值
例如:
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, \
希望这能解决您的问题!!
我有以下从 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
代码运行良好,但没有将包含 NULL 的列导入到 HBase。
我知道 HBase 不接受空值,但如果我正确理解文档,Sqoop 应该将它们分别转换为 "empty string" 和“0”。
有什么神奇的系统吗属性我不见了?
我的Sqoop版本是1.4.6-cdh5.10.1.
提前致谢
null-string 和 null-non-string 是仅在将数据从 SQL 导入 Hive 而不是 HBase 时支持的参数。检查 SQOOP 文档以进行确认。 https://sqoop.apache.org/docs/1.4.6/SqoopUserGuide.html#_importing_data_into_hive https://sqoop.apache.org/docs/1.4.6/SqoopUserGuide.html#_importing_data_into_hbase
因此可以使用COALESCE
运算符解决上述问题。而不是使用 *
使用列名,并在 SQL 字段具有 null
值的那些列中使用 COALESCE
,方法是在存储在 HBase
例如:
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, \
希望这能解决您的问题!!