在使用sqoop导mysql到hive的时候发现出现了warn,但是导入成功了:
为什么会有这种情况呢?报的是两个字段,分别取mysql和hive中查找对应字段寻找原因。
mysql:
hive:
经过查看后发现居然导入hive后变成了string类型,而由于两者类型不同,所以在导入的时候报了warn,不影响结果,不过还是写一下解决方案如下:
方案一
在导入之前自己先把表创建好,这样sqoop就不会帮你创建了。而且这样创作的表数据类型更加精准,特别适合一些精度要求非常高的字段。
方案二
在sqoop导入的时候去指定字段
可以在sqoop导入的时候,指定数据类型
--map-column-java updated_at=java.sql.Timestamp \
--map-column-hive updated_at=Timestamp \
如果你想测试这个效果,需要先删除之前的表,再次创建时才会看到效果。
记录完成,不过由于是warn管不管都不会影响结果所以没啥意义,但是既然看到了还是积累下来吧。