一、问题背景

Datax从Mysql数据库到Hive数据同步任务时,发现同步时,date类型字段同步到Hive里中string类型字段时,部分日期会减少一天。

二、集群环境

Datax版本:3.0

三、现象描述

mysql数据库时间

Hive数据库中时间

1986-07-17

1986-07-16

1987-06-26

1987-06-25

1987-12-08

1987-12-08

1988-05-18

1988-05-17

1989-08-08

1989-08-07

1997-08-08

1997-08-08

以上数据是测试时,发现的情况,可以看到对于某些特定日期数据来说,日期往前推移了一天。而且hive表中接收的字段必须是string类型的,对于hive也是date类型的数据不会有这种问题,对于这种现象令人十分迷惑,只能先从代码上找找原因所在,但可以确定大概率的问题应该出在类型转换上。

四、Datax代码

Reader代码Date类型转换:

CommonRdbmsReader:

protected Record buildRecord(RecordSender recordSender,ResultSet rs, ResultSetMetaData metaData, int columnNumber, String mandatoryEncoding,

TaskPluginCollector taskPluginCollector) {

Record record = recordSender.createRecord();

try {

for (int i = 1; i <= columnNumber; i++) {

switch (metaData.getColumnType(i)) {

...

// for mysql bug, see http://bugs.mysql.com/bug.php?id=35115

case Types.DATE:

if (metaData.getColumnTypeName(i).equalsIgnoreCase("year")) {

record.addColumn(new LongColumn(rs.getInt(i)));

} else {

record.addColumn(new DateColumn(rs.getDate(i)));

}

break;

...

}

}

} catch (Exception e) {

if (IS_DEBUG) {

LOG.debug("read data " + record.toString()

+ " occur exception:", e);

}

//TODO 这里识别为脏数据靠谱吗?

taskPluginCollector.collectDirtyReco

hive mysql日期减一天_Datax-Mysql同步至Hive时时区问题导致日期减少一天相关推荐

  1. mysql 天数减1_mysql 日期操作 增减天数、时间转换、时间戳

    MySQL datediff(date1,date2):两个日期相减 date1 - date2,返回天数. select datediff('2008-08-08', '2008-08-01'); ...

  2. mysql日期减后取月_mysql加减时间-函数-时间加减

    select timediff('23:40:00', ' 18:30:00'); -- 两时间相减 SELECT substring( timediff('23:40:00', ' 18:30:00 ...

  3. mysql中日期相减_如何使用MySQL数据库

    如何使用MySQL数据库 前言:前面我们已经了解了如何搭建MySQL数据库,那么接下来我们就一起来了解一下,如何使用MySQL数据库. MySQL数据库系统也是一个典型的C/S(客户端/服务器)架构应 ...

  4. mysql 日期减10分钟_获取当前时间减去10分钟的话SQL语句怎么写

    获取当前时间减去10分钟的话SQL语句怎么写 Mysql日期和时间函数不求人 本文出自:http://linuxdb.yeah.net 作者: 晏子 (2001-07-05 15:00:00) 对于每 ...

  5. 2021年大数据Hive(二):Hive的三种安装模式和MySQL搭配使用

    全网最详细的Hive文章系列,强烈建议收藏加关注! 后面更新文章都会列出历史文章目录,帮助大家回顾知识重点. 目录 系列历史文章 前言 Hive的三种安装模式和MySQL搭配使用 一.Hive的安装方 ...

  6. mysql加减时间-函数-时间加减

    select timediff('23:40:00', ' 18:30:00'); -- 两时间相减 SELECT   substring( timediff('23:40:00', ' 18:30: ...

  7. mysql加减分钟_mysql加减时间-函数-时间加减

    select timediff('23:40:00', '18:30:00'); --两时间相减 SELECT substring( timediff('23:40:00', '18:30:00'), ...

  8. mysql查询员工表中所有员工入职20个月之后的日期_Mysql基础教程

    往期推荐 2020黑马Python教程 Docker基础知识 网易云课堂2019 Java高级教程 郭术生AE教程 SQL语句分类 DDL:数据定义语言,用来定义数据库对象:库.表.列等 DML:数据 ...

  9. hive mysql 远程_Hive配置 远程连接MySQL

    因为hive是Hadoop的一个组件,作为数据厂库,hive的数据是存储在Hadoop的文件系统中的,hive为Hadoop提供SQL语句,是Hadoop可以通过SQL语句操作文件系统中的数据.hiv ...

最新文章

  1. 前端图片上坐标连线_平面上三角形“四心”的解析建模
  2. BAC--Downtime 凌晨时段设定
  3. 【学习笔记】【C语言】结构体
  4. 获取当前程序运行的主机名称
  5. java编写一个彩票开奖的模拟程序.游戏共有两种玩法,一种是21选5,即玩家输入5个1到21内的不重复的数。另外一种玩法是6+1玩法,即要求玩家输入7个整数,代表所购买的彩票号码,最后一个是特码。
  6. Vue学习笔记之11-slot插槽
  7. Actran助力汽车全频率段声学响应预测与优化
  8. 2345好压去广告方法
  9. 动态规划之《高楼扔鸡蛋》问题详解 LeetCode 887.鸡蛋掉落
  10. Python参考手册(第4版)pdf
  11. 超市服务器的维护和管理,超市管理系统的设计与实现
  12. 从零到一:如何用你的电脑成功登录QQ
  13. vscode输入vue一键生成代码
  14. LSTM模型预测sin函数详解
  15. leetcode Sum 系列----寻找和为定值的多个数
  16. word中新建的标题编号与上一级的标题编号没有顺承的一种解决方法
  17. linux端oracle设置缓冲区大小,oracleORA-20000: ORU-10027: buffer overflow, limit of 2000 bytes
  18. Spring认证中国教育管理中心-Spring Data MongoDB教程五
  19. MPLS BGP配置实例及抓包分析
  20. 前端面试题《网络浏览器》

热门文章

  1. 怎么样构建一间ZOOM视频会议室
  2. 调整图像亮度和对比度
  3. 关于服务质量设置(QoS)
  4. php网页制作中搜索框的代码,在网页里嵌入百度搜索框功能
  5. Bilevel Optimization
  6. 软件工程方法论对我们软件开发有多大用处?
  7. partial 函数之参数传入
  8. 计算机病毒与防范技术
  9. ACPI WMI 杂记
  10. html作业给父亲的三行书信,写给父亲的三行诗