> 文章列表 > flink任务处理下线流水数据,数据遗漏不全(一)

flink任务处理下线流水数据,数据遗漏不全(一)

flink任务处理下线流水数据,数据遗漏不全(一)

背景

1、test3是单独接受T4301的mqtt主题数据

以下是flink代码

以下是node-red的


跟踪分析

拉出tdengine里面的数据曲线,看是否存在遗漏的情况

 

 少2023-04-05 22:05:48的日志

 

 

 

贴上我的代码

 

小结

1、虽然下线记录比之前的多很多了,但是还是遗漏一些数据,不全!!

2、再看看Test2的程序log,因为Test2是接受所有的,看看这里的T43-1是否存在遗漏情况 


跟踪Test2发现

也少了数据

 

发现Test2和Test3一样的,遗漏一样的数据

Test2的数据量是Test3的四倍!!!

目前没有证据指名是数据量大小导致数据遗漏的,我觉得可能是程序判断有Bug,先把Test3的原因找到!!

数据遗漏的原因,如果不是跟数据量有关

可能的原因1、判断下线的代码有误

我把这里判断的数据改成之前的程序,然后运行看看2023-04-06 11:27发布的Test2  Test3

这个版本不对,== 改成equals();不然2分钟就会存储一次数据  2023-04-06 12:12:00


可能的原因2、tdengine数据莫名其妙的错位

昨天发现很奇怪的现象,数据存在CWW=40多和CWW=0.1交错;上一秒数据是40多,下一秒数据0.1,查遍整个流程的代码,并没有出现,topic写错的情况!!!

然后怀疑是数据到达emqx的时候有混乱排序,把数据的时间改成从Node-red创建时间,而不是在emqx中插入语句的now();

今天并未出现这种现象!!

 所以我打算把所有的topic的now()改成node-red数据发出时创建的时间ts!