hive中数据类型转换_csv文件导入sqlserver数据库中

hive中数据类型转换_csv文件导入sqlserver数据库中1 类型映射关系 mysql 和 hive 中的数据类型存在差异 在 mysql 集成数据到 hive 中这样的场景下 我们希望在 hive 中的数据是贴源的 所以在 hive 中希望创建和 mysql 结构一致的表 mysql 到 hive 数据类型映射参考如下 mysql 数据类型 hive 数据类型 整型 bigint BIGINT 整型 int BIGINT 整型 smallint BIGINT 整型 tinyint

1.类型映射关系

mysql和hive中的数据类型存在差异,在mysql集成数据到hive中这样的场景下,我们希望在hive中的数据是贴源的,所以在hive中希望创建和mysql结构一致的表。

mysql到hive数据类型映射参考如下:

mysql数据类型hive数据类型
整型bigintBIGINT
整型intBIGINT
整型smallintBIGINT
整型tinyintBIGINT
浮点型decimaldecimal
浮点型doubleDOUBLE
浮点型floatDOUBLE
二进制binaryBINARY
二进制varbinaryBINARY
字符charSTRING
字符varcharSTRING
字符mediumtextSTRING
字符textSTRING
时间datetimeSTRING
时间timeSTRING
时间timestampSTRING
时间datedate
jsonjsonMAP<STRING,STRING>

2.问题注意:

1.问题:

用公司的大数据平台(DataX)导数,已经开发上线一个多月的一批报表,突然有同事说有个报表数据不准。出在时间字段上。
分析:
1、先看了原数据MySQL字段类型为datetime,目标字段为timestamp类型;
2、经发现所有时间的差距都是8小时,怀疑是因为时区转换的原因;
3、对比其他表,看看是大范围现象还是特殊情况,发现其他的同样情况字段的一样没有问题,也有改变为string字段类型的也没有问题;

2.解决办法

经过对比:发现DATAX(sqoop也类似)在转换MySQL datatime字段类型为hive的timestamp时会出现问题:默认先转为零食去对应时间戳,再转换为北京市区时间,就会使时间多8小时。
解决办法有两个:
1、转换为string类型;
2、继续用timestamp类型,但是需要行存储(即text存储)。

遇见时间类型转换问题时要小心,保守最好是string,简单的比较大小不会影响后续计算。

编程小号
上一篇 2025-04-20 10:40
下一篇 2025-03-23 12:51

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/hz/138956.html