我正在研究一种逻辑,通过比较以前的时间和当前的时间,并将值存储在数据库中,来查找流层中两个时间戳之间的连续时间差。
例如:
因此,根据上面的时间戳,我的连续差将分别是5分钟(11:00- 11:05:00)和2分钟,当我加起来时,我将得到7分钟(5+2),这将是实际时差。现在真正的挑战是当我收到延迟的时间戳。
例如:
在这里,当我计算差分时,分别是5分钟,2分钟,5分钟,现在我得到的差之和是12分钟(5+2+5),它将大于实际时差(7分钟),.which是错误的。
请帮助我找到一个解决办法,通过记录时间差计算来处理这个延迟时间戳。
发布于 2017-08-24 08:29:46
你正在经历的是‘事件时间’和‘处理时间’之间的区别。在最好的情况下,处理时间将与事件时间几乎相同,但有时输入记录会延迟,因此差异将更大。
处理流数据时,可以定义(显式或隐式)记录窗口。如果您单独处理记录,则此窗口的大小为1。在您的情况下,您的窗口大小为2。但您也可以有一个基于时间的窗口,即您可以查看在过去10分钟内收到的所有记录。
如果要按顺序处理延迟记录,则需要在延迟记录到达之前等待,然后在窗口内对记录进行排序。问题就变成了,你要等多久?延迟的记录可能会在两天后出现!等待多长时间是一个主观问题,取决于您的应用程序及其要求。
请注意,如果您的窗口是基于时间的,您将需要处理的情况下,没有以前的记录是可用的。
我强烈推荐本文:https://www.oreilly.com/ideas/the-world-beyond-batch-streaming-101来掌握流术语和窗口。
https://stackoverflow.com/questions/45853487
复制相似问题