Spark Streaming中批处理间隔、滑动间隔和窗口大小的区别

Har*_*jan 9 apache-spark spark-streaming

我是新的火花流。我知道窗口大小需要是批处理间隔的倍数。但是滑动间隔是如何工作的呢?如果我有 3 个窗口大小和 2 个滑动间隔,当我计算单词计数时会不会有重叠?或者滑动间隔和批处理间隔应该相同?

Vla*_*ans 12

是文档的链接。

在此处输入图片说明

让我们来看看这些概念:

  1. 批处理间隔- 以秒为单位的时间,在分派处理之前收集数据的时间。例如,如果您将批处理间隔设置为 5 秒 - Spark Streaming 将收集 5 秒的数据,然后使用该数据在 RDD 上进行计算。
  2. 窗口大小- 在处理之前,RDD 中应包含多少历史数据的时间间隔(以秒为单位)。例如,您有 1 秒的批次间隔和 2 的窗口大小 - 在这种情况下,您将每秒对前 2 个批次进行计算。例如,在 time=3 时,您将在 time=2 和 time=3 时获得批次数据。
  3. 滑动间隔- 是窗口将移动多少的时间量(以秒为单位)。例如在前面的示例中,滑动间隔为 1(因为计算每秒被踢出)例如在时间 = 1、时间 = 2、时间 = 3...如果你设置滑动时间间隔 = 2,你将在时间 = 1 计算,时间=3,时间=5...

您可以参考上图,其中窗口大小是批处理间隔的 3 倍,滑动窗口是批处理间隔的 2 倍。

回答一个问题,为什么窗口和滑动间隔应该是批次间隔的倍数 - 这是因为否则你的窗口将在批次之间结束。

如果您的窗口大小为 3,滑动间隔为 2(见图) - 是的,您的字数会重叠。基本上,当您想要在有限的时间内计算某些内容时(例如实际新闻或推文或其他内容),当您不需要所有历史数据进行分析时,您可以使用 window 。