我正在阅读一篇关于数据流管理的长篇文章,我对Sliding和Tumbling Windows之间的区别感到有些困惑。到目前为止,我已经明白,翻滚窗口可以是基于时间的,并且具有固定的(开始,结束)点,当该窗口到期时,这些点会“翻滚”。例如。基于时间的窗口可以是1分钟长。因此,对于每分钟,窗口都会翻滚以处理数据集的聚合。
滑动的窗户让我很困惑。滑动窗口是否像基于计数一样,当x元组的数量进入窗口时,窗口会翻滚。或者是进入窗口的x-recent元组将成为窗口的一部分,并且旧的元组将从该窗口逐出。即随着新元组的到来不断更新的窗口?
答案 0 :(得分:37)
答案 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使得插图与众不同。
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):
SUM
t0
; SW = TW = 0
t10
; SW = TW = 24
处没有TW,但t11
且连续窗口之间的交点为SW = 23
; 7 4 3 1 1 3
处没有TW,但t11
且连续窗口之间的交点为SW = 21
; 4 3 1 1 3 4
t20
; TW = SW = 48
处没有TW,但t21
且连续窗口之间的交点为SW = 44
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。