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