滑动与翻滚Windows

时间:2012-09-26 13:02:55

标签: streaming

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

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

3 个答案:

答案 0 :(得分:37)

  1. 翻滚以非重叠间隔重复。
  2. 跳跃类似于翻滚,但跳跃通常会有重叠。
  3. 时间滑动会定期触发。
  4. 驱逐滑动会触发计数。
  5. 下面是一个图形表示,显示了不同类型的 D ata S tream M 管理 S 系统(< strong> DSMS )窗口 - 翻滚,跳跃,计时策略滑动和驱逐策略(计数)滑动。我使用上面的例子来创建图像(做出假设)。

    Windowing in DSMS

答案 1 :(得分:12)

翻滚窗(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

答案 2 :(得分:0)

让我们认为加窗功能是一种传统的GROUP BY操作,该操作对基于时间的输入数据起作用,应用给定的聚合函数并输出结果。

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

Microsoft Azure流分析的一个很好的reading使得插图与众不同。

  • TW ,考虑到10s的滴答声,这种开窗操作会在该时间范围内每隔一个滴答输出聚合函数的结果;
  • SW ,考虑到Xs的滴答声,因此这种窗口化操作会在Ys时间段发生事件时(例如{{ 1}}和X = 1,然后开窗功能就会每秒回顾十秒钟,系统地丢弃最旧的数据点。

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

Y = 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-> 视为聚合函数,并将SW的过时策略视为希望窗口(HW)

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

SoftwareMill首席技术官Adam Warski的另一个good reading举例说明了使用现代流技术,例如Spark,Flink,Akka和Kafka。