【问题标题】:Record by record timestamp difference calculation逐记录时间戳差计算
【发布时间】:2017-08-24 05:20:58
【问题描述】:

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

例如:

  1. 2017-08-01 11:00:00
  2. 2017-08-01 11: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-01 11:05:00
  3. 2017-08-01 11:07:00
  4. 2017-08-01 11:02:00

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

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

【问题讨论】:

  • 你可以按时间戳排序然后计算差异

标签: apache-spark hive timestamp spark-streaming summarization


【解决方案1】:

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

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

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

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

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

【讨论】:

  • 感谢您的回复..将通过文章并回来..非常感谢
猜你喜欢
  • 2014-08-10
  • 1970-01-01
  • 2015-04-26
  • 2017-07-13
  • 1970-01-01
  • 2023-03-14
  • 2020-06-30
  • 2021-03-18
  • 1970-01-01
相关资源
最近更新 更多