Flink Window那些事——Window小分類(Window Assinger類型)


1、Window Assinger是干啥的
當你決定stream是否keyby之后,window是沒有構建的,你還需要指定一個window Assinger用於定義元素如何分配到窗口中。

2、window Assinger如何指定?
Keyedstream:window(WindowAssigner)
non-keyed streams :windowAll(WindowAssigner)
window Assinger的作用:負責將每個傳入的元素分配給一個或多個窗口

有了window Assinger,才會創建出各種形式的window來覆蓋我們所需的各種場景,所以不用過多關注window本身的分類,關注window Assinger的分類即可。

Count-based window: 根據元素個數對數據流進行分組切片
Tumbling CountWindow(翻滾窗口)
Sliding CountWindow(滑動窗口)

Time-based window: 根據時間對數據流進行分組切片
Tumbling Window
Sliding Window
Session Window

注意:Time-based window [start,end)

3、Tumbling Windows-翻滾窗口
3.1、定義:將數據依據固定的窗口長度對數據進行切片

3.2、特點:
時間對齊
窗口長度固定
event無重疊

3.3、適用場景:
BI統計(計算各個時間段的指標)

3.4、Tumbling Windows的使用
對齊方式:默認是aligned with epoch(整點、整分、整秒等),可以通過offset參數改變對齊方式

4、Sliding Windows-滑動窗口
4.1、定義:是固定窗口的更廣義的一種形式。滑動窗口由固定的窗口長度和滑動間隔組成

4.2、特點:
時間對齊
窗口長度固定
event有重疊

4.3、適用場景:
監控場景,對最近一個時間段內的統計(求某接口最近5min的失敗率來決定是否要報警)

4.4、Sliding Windows的使用
對齊方式:默認是aligned with epoch(整點、整分、整秒等),可以通過offset參數改變對齊方式。

5、Session Windows
5.1、定義:
類似於web應用的session,即一段時間沒有接受到新數據就會生成新的窗口(固定gap/gap fun)

5.2、特點:
時間無對齊
event不重疊
沒有固定開始和結束時間

 

5.3、適用場景:
線上用戶行為分析

5.4、Session Windows的使用
5.4.1、Gap
固定gap
動態gap(函數):實現SessionWindowTimeGapExtractor

 

5.4.2、特殊處理方式
session window operator為每個到達的event創建一個新窗口,如果它們之間的距離比定義的間隔更近,則將窗口合並在一起

為了能夠合並, session window operator需要合並觸發器和合並窗口函數,例如ReduceFunction、AggregateFunction或ProcessWindowFunction (FoldFunction不能合並)

6、Global Windows
6.1、定義:有相同key的所有元素分配給相同的單個全局窗口

6.2、必須指定自定義觸發器否則沒有任何意義

6.3、注意:不要跟Non-keyed Window搞混,兩個不同的角度


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM