一. 窗口介绍
在分布式计算中,基于数据窗口的计算是一个非常常见的应用场景,比如说聚类、模式识别等。
storm支持两种方式的窗口:滑动窗口和固定窗口,并且支持从两种维度进行窗口分割:时间或tuple数。比如说用时间分割来实现一个滑动窗口,需要给定两个数值,窗口大小和滑动时间。一个窗口大小为10sec,滑动时间为5sec的窗口示意如下
如图中所示,对这个流进行窗口计算的bolt会收到两次execute调用,一次是包含6个tuple的w1,一次是包含7个tuple的w2,是通过时间来进行划分的。而对于固定窗口,只需要给定一个划分参数即可,下图表示一个窗口大小为5sec的固定窗口
Storm可同时处理窗口内的所有tuple。窗口可以从时间或数量上来划分,由如下两个因素决定:
- 窗口的长度,可以是时间间隔或Tuple数量;
- 滑动间隔(sliding Interval),可以是时间间隔或Tuple数量;
① Sliding Window:滑动窗口
按照固定的时间间隔或者Tuple数量滑动窗口。