36

我正在阅读一篇关于数据流管理的长文,对滑动窗口和翻滚窗口之间的区别感到有些困惑。到目前为止,我已经了解翻滚窗口可以是基于时间的,并且具有固定的(开始,结束)点,当该窗口到期时“翻滚”。例如,基于时间的窗口可以是 1 分钟长。因此,每隔一分钟,窗口就会翻滚以处理数据集的聚合。

滑动窗户让我感到困惑。滑动窗口是否像基于计数的那样,当 x 个元组进入窗口时,窗口会翻滚。还是进入窗口的 x-recent 元组将成为窗口的一部分,并且较旧的元组将从该窗口中逐出。即随着新元组的到来而不断更新的窗口?

4

3 回答 3

82
  1. 翻滚以不重叠的间隔重复。
  2. 跳跃类似于翻滚,但跳跃通常具有重叠的间隔。
  3. 时间滑动定期触发。
  4. 逐出滑动触发计数。

下面是一个图形表示,显示了不同类型的数据流管理系统 ( DSMS )窗口-翻滚、跳跃、定时策略滑动和驱逐策略(计数)滑动。我使用上面的示例来创建图像(做出假设)。

DSMS 中的窗口化

于 2016-11-14T23:04:44.513 回答
18

Tumbling windows (TW) 窗口内的所有元组同时到期。

滑动窗口 (SW) 只有一些元组在给定时间过期

示例 如果您有一个包含以下整数的窗口输入(符号整数(输入后的秒数)),假设 TW 是在 60 秒前创建的,并且两个窗口的时间限制都是 60 秒。

1 (0s), 2 (10s), 4 (24s), 8 (17s), 16 (40s)

假设 20 秒过去了,然后以下整数进入窗口。

7, 3, 6

现在之前的 TW 将已过期,并且将仅包含上述值。虽然 SW 将包含以下值

7, 3, 6, 1, 2, 4, 8
于 2012-11-05T11:20:13.613 回答
1

让我们将窗口函数视为传统的GROUP BY操作,它适用于基于时间的输入数据,应用给定的聚合函数并输出结果。

翻滚窗口 (TW)操作和滑动窗口 (SW)操作之间的主要区别在于所考虑数据点的交集,在前一种情况下为空,在后一种情况下可能为非空。

来自 Microsoft Azure Stream Analytics 的出色读物使插图与众不同。

  • TW,考虑到 10 秒的滴答声,这样的窗口操作会在每个滴答声中输出聚合函数在该时间范围内的结果;
  • SW,考虑到 Xs 的滴答声,这样的窗口操作在每次发生事件时输出 Ys 时间帧的聚合函数的结果,例如X = 1Y = 10然后窗口函数每秒回溯 10 秒,系统地丢弃最旧的数据点。

让我们看一个以下时间序列的具体示例:

t0-> 5 7 4 3 1 1 3 t10-> 4 5 8 1 2 3 3 3 5 7 7 t20-> t30-> 3 3 4 t40->

考虑SUM作为聚合函数和 SW 的平庸策略,即希望窗口 (HW)

  • t0 SW = TW = 0;
  • t10 SW = TW = 24;
  • t11没有 TW 但是SW = 23并且连续窗口之间的交点是7 4 3 1 1 3;
  • t11没有 TW 但是SW = 21并且连续窗口之间的交点是4 3 1 1 3 4;
  • t20 TW = SW = 48;
  • t21没有 TW 但是SW = 44连续窗口之间的交点是5 8 1 2 3 3 3 5 7 7
  • t30 TW = SW = 0;
  • t31没有 TW 但是SW = 3连续窗口之间的交集是空的,因为没有发生任何事件[t20, t30]

SoftwareMill 首席技术官 Adam Warski 的另一本好书,它举例说明了如何使用 Spark、Flink、Akka 和 Kafka 等现代流技术。

于 2018-12-02T09:27:40.943 回答