Hive表存在null值导出到MySQL报错:Can't parse input data: '\N'

使用sqoop把hive表数据导到mysql时因空值报错问题

 

在hdfs上查看hive内部表的数据,发现是使用\N来代表null值的,但是mysql只能识别null,无法识别\N,所以导入时会报以下错误:

Caused by:java.lang.RuntimeException: Can't parse input data: '\N'

 

这时可以通过以下方法解决:

1、使用sqoop命令

① 在sqoop导出语句增加--input-null-string '\\N' --input-null-non-string '\\N' 参数,把\N转化成空字符''。

 

2、对hive表的处理

① 建表时通过NULL DEFINED AS '' 声明hive底层使用空字符存储和标识空值。

② 通过alter table table_name SET SERDEPROPERTIES('serialization.null.format'= '') 语句修改hive底层存储和标识空值为空字符'',但是修改后需要删除数据后重新导入才能生效。

 

3、对导入hive表的数据进行处理

① insert into table hive1 select IFNULL(Null,0) from mysql_table;

② insert into table hive1 select CASE column WHEN Null THEN 0 END from mysql_table;

 

参考链接:https://blog.youkuaiyun.com/williamjame/article/details/78856836

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值