美文网首页
一个由TimeZone引发的BUG

一个由TimeZone引发的BUG

作者: Caoyun | 来源:发表于2017-11-02 16:54 被阅读10次

数据平台的数据流水线如下图所示,最近的平台的数据出现异常,数据导入过程中随机出现Impala中的数据比Loghub中的数据少了很多。从数据流水线来看只有两种可能:1.从MQ上消费数据存入HBase的过程有遗漏;2.从HBase中导入数据到Impala中时数据有遗漏。

数据流水线 首先想到找几个主要的业务把最近一段时间各个步骤的原始数据列出来,看看到底是哪个环节丢了数据。

实测发现主要是HBase导入Impala的过程数据丢失比较严重。暂且认为MQ的消费程序是没有问题的。

找了数据丢失比较严重一天(10月30号),重新跑数据导入任务,惊奇的发现有的项目的数据变多了,有的项目数据变少了。我们对HBase是没有删除操作的,所以基本锁定问题出在HBase导入数据到Impala时出了问题。难道是Hive的Bug ?

对比了两次导入的SQL语句惊奇的发现筛选条件居然不一样:

正常数据的筛选条件 异常数据的筛选条件

上面的$id是HBase的行键,通过日期来计算得到的,日期明明都是2017-10-30得到的$id却是不同的。那么,很显然问题出在通过日期获取时间戳这里。暂时还是猜想,写个小Demo验证一下。

通过日期获取时间戳的Demo

上面的代码逻辑很简单,从控制台获取一个日期字符串,然后解析成Date对象,然后输出时间戳。然后拷贝到NodeManager所在的节点上运行一下。不出所料,结果是不一样的。

011上得到运行结果 012上的运行结果

到底哪个是对的呢,找个Web的Unix时间戳解析工具测了一下012上的结果是对的,011上的结果解析出来是2017-10-30 12:00:00。那么这很有可能是一个时区问题。下意识查看了一下系统时间:

011上的系统时间 012上的系统时间

发现两台机器上的语言和时区是不同的。修改上面的Demo程序,手动指定时区。

动态指定时区
通过java属性指定时区

通过上述办法设置时区后,在011上也能得到正确的结果。

总结:在数据平台的当前架构中,定时任务通过OOZIE来启动,OOZIE将任务通过ResourceManager分发到不同的NodeManager中运行。为了保证java程序在不同环境下运行结果相同,时区和文件编码不应该是用默认值。而应当在使用时显示的指定时区和编码,避免程序出现不可预料的运行结果。

相关文章

  • 一个由TimeZone引发的BUG

    数据平台的数据流水线如下图所示,最近的平台的数据出现异常,数据导入过程中随机出现Impala中的数据比Loghub...

  • 由Deeplinking引发bug的认知

    昨天,由于个人粗心导致项目在Deeplinking无法使用,进而想到前段时间自己出现问题到现在的问题,说明...

  • 前端开发怎么Debug?

    你是否发现:有时候,当某个BUG被我们修复之后,却又发现一个由该BUG引发的另一个BUG,或则由于修复算法的缺陷引...

  • 由LinkedList的listIterator引发的Bug

    前言:在本周的一个开发任务中,我需要根据一个存储了Android点击事件的LinkedList,来处理另一个相关的...

  • 一个由Django的save方法引发的bug

    引自bug的产生 我已经很久没碰到让人比较头疼的bug了,前两天的时候碰到了一个。写个文章记录下来。 希望看过文章...

  • 记录Mybatis的配置之谜

     每个现象背后都有其缘由,越离奇的bug越是由不起眼的细节引发,每个bug背后都有框架或代码运行的原理和机制所在,...

  • 记录Mybatis的配置之谜

    每个现象背后都有其缘由,越离奇的bug越是由不起眼的细节引发,每个bug背后都有框架或代码运行的原理和机制所在,解...

  • Mac开发之一个Bug引发的三个思考

    既然是一个Bug引发的思考,自然要先上Bug,如上动图所示,在输入了空格标题之后,引发一个问题,就是光标依然在文本...

  • 一个“Toast”引发的bug

    哈哈,蛮开心的,今天收到了简友的第一个喜欢,谢谢~相信大家都用过Toast提示:Toast.makeText(co...

  • 一个bug引发的思考

    事情是这样的,一个商品线的小哥哥,找到我,说有批货,不小心入库了两次,一笔在海外转运虚拟仓,一笔在杭州保税仓,于是...

网友评论

      本文标题:一个由TimeZone引发的BUG

      本文链接:https://www.haomeiwen.com/subject/ogzopxtx.html