记录按记录时间戳差计算

Record by record timestamp difference calculation

我正在研究一种逻辑,通过比较以前的时间和当前时间并将值存储在数据库中来找到流层(spark)中两个时间戳之间的连续时间差。

例如:

  1. 2017-08-01 11:00:00
  2. 2017-08-0111:05:00
  3. 2017-08-01 11:07:00

所以根据上面的时间戳,我的连续差异将分别为 5 分钟(11:00:00 - 11:05:00)和 2 分钟,当我对差异求和时,我将得到 7 分钟(5+2 ) 这将是实际的时差。现在真正的挑战是当我收到延迟的时间戳时。

例如:

  1. 2017-08-01 11:00:00
  2. 2017-08-0111:05:00
  3. 2017-08-01 11:07:00
  4. 2017-08-01 11:02:00

在这里,当我计算时差时,分别为 5 分钟、2 分钟、5 分钟,现在将差值相加得到 12 分钟 (5+2+5),这将大于实际时差(7 分钟)。这是错误的

请帮助我找到一种解决方法,通过计算记录时差来处理记录中的延迟时间戳。

您遇到的是'event time'和'processing time'之间的区别。在最好的情况下,处理时间几乎与事件时间相同,但有时输入记录会延迟,因此差异会更大。

当您处理流数据时,您定义(显式或隐式)您查看的 window 记录。如果您单独处理记录,这个 window 的大小为 1。在您的情况下,您的 window 的大小为 2。但是您也可以有一个基于时间的 window,即您可以查看最近 10 分钟内收到的所有记录。

如果要按顺序处理延迟记录,需要等待延迟记录到达后,再对window内的记录进行排序。那么问题就变成了,你要等多久?延迟的记录可能会在 2 天后出现!等待多长时间是一个主观问题,取决于您的应用程序及其要求。

请注意,如果您的 window 是基于时间的,您将需要处理没有先前记录可用的情况。

我强烈推荐这篇文章:https://www.oreilly.com/ideas/the-world-beyond-batch-streaming-101 以掌握流媒体术语和 windows。