sqoop/NiFi将 mysql导入hive 数值类型变成null的问题解决方案

一、问题描述

mysql通过sqoop导入到hive表中,发现有个别数据类型为int或tinyint的列导入后数据为null。设置各种行分隔符,列分隔符都没有效果。
加粗样式
源库为1,0显示

二、问题分析

将hive中单独将有问题的那几列的数据类型设置为string类型,重新导入后发现,里面的值变成true或者false,依然不是0和1
在这里插入图片描述
由此猜想,sqoop在导入的时候,将那几列的数据转换成了bool类型,问题产生的原因和hive建表语句无关,只能发生在sqoop端或者mysql端。

经过查看,发现mysql中有问题的那几列数据类型都是tinyint(1),这说明什么,说明那几列的数值长度为1。猜想sqoop将数值长度为1的数据类型,认为是bool类型,导入的时候会自动转换成bool类型。
在这里插入图片描述

三、 解决方案

在sqoop的导入sql语句中,单独对那几个问题列进行数据类型转换CONVERT(match_type,SIGNED) as match_type,由此可以将tinyint转换为整数,然后再导入hive,发现数据可以正常显示.
在这里插入图片描述

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 书香水墨 设计师:CSDN官方博客 返回首页
实付 29.90元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值