sqoop从mysql到hive的时间字段问题

Torie ·
更新时间:2024-09-21
· 881 次阅读

一、问题发现与分析

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

二、解决办法

经过对比:sqoop在转换MySQL的datatime字段类型为hive的string时会出现问题:默认先转为对应时间戳,再转换为北京市区时间,就会使时间多8小时。
解决办法有两个:
1、在sql里将时间字段转换为string类型;
2、jdbc设置时区 : ?serverTimezone=GMT%2B8
例如:jdbc:mysql://rm-2ze710u046546581j33lo.mysql.rds.aliyuncs.com:3306/tp_member?serverTimezone=GMT%2B8
遇见时间类型转换问题时要小心,保守最好是string,简单的比较大小不会影响后续计算。


作者:大鹏_大数据



sqoop 字段 hive Mysql

需要 登录 后方可回复, 如果你还没有账号请 注册新账号