Flink基礎03-Flink window API

目錄:
window概念
window類型
window API

window概念
在這裏插入圖片描述
一般真實的流都是無界的,怎樣處理無界的數據?
可以把無限的數據流進行切分,得到有限的數據集進行處理,即得到有界流
窗口(window)就是將無限流切割爲有限流的一種方式,它會將流數據分發到有限大小的桶(bucket)中進行分析

window類型
時間窗口(Time Window)
滾動時間窗口(Tumbling Windows)

在這裏插入圖片描述
將數據依據固定的窗口長度對數據進行切分
時間對齊,窗口長度固定,沒有重疊
滑動時間窗口(Sliding Windows)
在這裏插入圖片描述
滑動窗口是固定窗口的更廣義的一種形式,滑動窗口由固定的窗口長度和滑動間隔組成
窗口長度固定,可以有重疊
(股票預估)
會話窗口(Session Windows)
在這裏插入圖片描述
由一系列事件組合一個指定時間長度的timeout間隙組成,也就是一段時間沒有接收到新數據就會生成新的窗口
特點:時間無對齊

計數窗口(Count Window)
滾動計數窗口
默認的 CountWindow 是一個滾動窗口,只需要指定窗口大小即可,當元素數量
達到窗口大小時,就會觸發窗口的執行
滑動計數窗口
滑動窗口和滾動窗口的函數名是完全一致的,只是在傳參數時需要傳入兩個參
數,一個是 window_size,一個是 sliding_size
window API
窗口分配器——window()方法
用.window()來定義一個窗口,然後基於這個window去做一些聚合或者其它處理操作。注意window()方法必須在keyBy之後才能使用。
Flink提供了更加簡單的.timeWindow和.countWindow方法,用於定義時間窗口和計數窗口
在這裏插入圖片描述
窗口分配器(window assigner)
window()方法接收的輸入參數是一個windowAssigner
windowAssigner負責將每條數據的數據分發到正確的window中
Flink提供了通用的windowAssigner
滾動窗口(tumbling window)
滑動窗口(sliding window)
會話窗口(session window)
全局窗口(global window)
在這裏插入圖片描述
在這裏插入圖片描述

窗口函數(window function)
window function 定義了要對窗口中收集的數據做的計算操作
可以分爲兩類
增量聚合函數(incremental aggregation functions)
每條數據到來就進行計算,保持一個簡單的狀態
ReduceFunction, AggregateFunction
全窗口函數(full window functions)
先把窗口所有數據收集起來,等到計算的時候會遍歷所有數據
ProcessWindowFunction

在這裏插入圖片描述

在這裏插入圖片描述

附思維導圖:
在這裏插入圖片描述

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