datax同步mysql数据到hive时,时间类型字段少8小时问题

5 篇文章 1 订阅

现象

在使用datax同步mysql数据到hive的时候,发现有些时间字段同步之后时间少了8小时。

下面分析一下具体情况。

背景知识

首先,明确一下hive支持的时间类型和datax支持的时间类型有哪些。

先看一下datax支持的数据类型:

这是datax GitHub上的文档,可以看到datax支持的时间类型只有date和timestamp。

接下来看一下hive3.x支持的数据类型:

 

可以看到,hive也支持date和timestamp两种时间类型。

但是datax和hive都不支持datetime类型,而我们的mysql中很多时间字段存储的都是datetime类型的,我这里也是在这个类型上出现的问题。

具体情况 

mysql中有一个字段(假设为createtime),其类型为datetime。由于datax和hive都不支持datetime类型,但支持string、date和timestamp。一开始没有多想,就在datax中用string类型写出,hive中用timestamp接收。结果就出现同步到hive后对应的时间少了8小时。

这个问题是datax进行时间类型字段的类型转换时产生的,具体可以看一下datax源码。

解决办法

后来将datax中的写出类型由string类型改为timestamp类型后(mysql为datetime类型、datax为timestamp类型、hive为timestamp类型),就没有问题了。

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值