描述:突然某天凌晨收到企业微信,电话,短信,轰炸式的报警,某个关联销售数据计算转化的应用层数据某个小时分片数据缺数(0条)
过程:基于以上问题,先去看了调度器的任务,没出问题,再去上一层DW表有数,看看维度表是否被人删了(一般不可能),然而有数并没啥问题,,,有点怀疑人生,又看了一轮,流式任务正常,kafka正常,flume正常,dw层正常,还奇怪啊,订单数据也正常但是spark任务跑的很稳定并无报销,奇怪啊,遇到什么灵异事件了啊,查看了yarn日志没报错,会不会是磁盘坏了,验证没问题啊,,,,基本是能想到的地方都查了一个遍,算了,我直接拿sql来,测试环境跑了一下,神奇啊没问题,此时,只有一种可能,那就是生产环境的服务器肯定做了变动,找运维问了一圈,的确,他们为了统一时区统一调整成美国时间。
终于找到了线索,不过按理来说服务器调整个时区,怎么就会影响到数据计算呢,肯定跟计算时间的某个行数有关吧。翻开代码,一行一行过,找到怀疑点了,有个计算”时间戳“的步骤(unix_timestamp(‘2022-02-02 03:43:54’,‘yyyy-MM-dd HH:mm:ss’))。来测试一遍,如下:
服务器1:美国东部 (弗吉尼亚北部)
select unix_timestamp('2022-02-02 03:43:54','yyyy-MM-dd HH:mm:ss')
服务器2:北京时区(东八区)
(1643773434-1643744634)/3600=8
差了八个时区,原来如此,因为里面有个逻辑在5小时之内下单的才做计算,,,



