Tumbling Windows和Sliding Windows區別與聯繫

在流系統中通常會經常使用到Windows來統計一定範圍的數據,比如按照固定時間、按個數等統計。一般會存在兩種類型的Windows:Tumbling Windows vs Sliding Windows,它們很容易被初學者混淆,那麼Tumbling Windows vs Sliding Windows之間到底有啥區別與聯繫呢?這就是本文將要展開的。

  Tumbling的中文意思是摔跤,翻跟頭,翻筋斗;Sliding中文意思是滑動,滑行、滑落;下跌;打滑等意思。中文意思之間不太好區分。

  Tumbling Windows vs Sliding Windows之間最大的區別就是:Tumbling windows是不可能重疊的;而Sliding Windows是存在重疊的。

Tumbling window

  Tumbling window在流數據中進行滾動,這種窗口不存在重疊,也就是說一個events/data只可能出現在一個窗口中,如下圖所示:

 

  從上圖可以看出,Tumbling window之間是不存在重疊的。Tumbling window的創建可以基於數量(比如每5個元素構成一個窗口)或者基於時間(如上圖每隔10s創建一個窗口)。

Sliding Window

  Sliding Window是在流數據中進行滑動,窗口之間可以重疊,它可以在傳入的數據流中進行平滑聚合。Sliding Window如下圖所示:

和Tumbling window一樣,我們可以根據需求創建基於數量或者基於時間窗口。

Tumbling Windows vs Sliding Windows區別

我們可以將Tumbling Windows看作是Sliding Windows的特殊情況,當Sliding Windows的滑動時間和窗口時間是一樣的時候,這時候Sliding Windows窗口之間就不會重疊,這就是Tumbling Windows。

  在當前的Spark版本中(甚至是Spark 2.0)是沒有提供直接創建Tumbling Windows的API,但是我們可以通過將Sliding Windows的window duration和slide duration設置成一樣來構成Tumbling Windows。

  而在Flink中存在非常豐富的窗口函數,包括Global Windows、Tumbling Windows、Sliding Windows以及Session Windows等等,這也是Flink功能強大的一面。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章