按记录时间戳差异计算记录

时间:2017-08-24 05:20:58

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

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

例如:

  1. 2017-08-01 11:00:00
  2. 2017-08-01 11:05:00
  3. 2017-08-01 11:07:00
  4. 所以根据上面的时间戳,我的连续差异将分别是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. 在这里,当我计算差异时,它将分别为5分钟,2分钟,5分钟,现在差异的总和将得到12分钟(5 + 2 + 5),这将大于实际时差(7分钟)分钟。这是错误的

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

1 个答案:

答案 0 :(得分:0)

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

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

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

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

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