Flink時間語義

2022-09-19 11:12:08 字數 1228 閱讀 8286

指的是資料流中每個元素或者每個事件自帶的時間屬性,一般是事件發生的時間

由於延遲有可能乙個較早完成的事件晚一些到達,在開窗的時候我們不可能一直等待視窗內應該到達的所有資料

在實際應用中,當涉及到對事件按照時間視窗進行統計時,flink會將視窗內的事件快取下來,直到接受到乙個watermark

如何使用:

使用event time作為時間戳

生成watermark

watermark:在開窗接受資料的時候,flink會等待乙個有限的時間,假設在這之後不會有更晚的資料到達。

在一定程度上降低了計算結果的絕對準確性,且增加了系統的延遲

優點:

某個事件的時間是確定的,保證計算結果在一定程度上的可**性

缺點:

快取較大,增加了延遲,除錯和定位問題更複雜

指的是,運算元使用當前機器的系統時鐘時間

無視事件本身的時間屬性,只要該事件在某個時間段到達了某個運算元,就會被歸結到該視窗下

優點:

只依賴當前執行機器的系統時鐘,不需要依賴watermark

無需快取

實現簡單,延遲最小

缺點:

不同環境下時間視窗的計算結果會發生變化,所以processing time在時間視窗下的計算會有不確定性

ingestion time是事件到達flink source的時間。從source到下游各個運算元中間可能有很多計算環節,任何乙個運算元的處理速度快慢可能影響到下游運算元的processing time。而ingestion time定義的是資料流最早進入flink的時間,因此不會被運算元處理速度影響。

ingestion time通常是event time和processing time之間的乙個折中方案。比起event time,ingestion time可以不需要設定複雜的watermark,因此也不需要太多快取,延遲較低。比起processing time,ingestion time的時間是source賦值的,乙個事件在整個處理過程從頭至尾都使用這個時間,而且後續運算元不受前序運算元處理速度的影響,計算結果相對準確一些,但計算成本比processing time稍高。

flink的時間語義 | weizheng (lulaoshi.info)

Flink筆記11 Flink時間語義

在flink 的流式處理中,會涉及到時間的不同概念,如下圖所示 乙個例子 電影 星球大戰 在這個例子中,事件時間 事情真正傳送的時間 星球大戰1 星球大戰2 星球大戰3 星球大戰4 處理時間 電影拍攝時間 星球大戰4 星球大戰5 星球大戰6 星球大戰1 例如,一條日誌進入flink 的時間為2017...

Flink從入門到真香 13 時間語義的定義)

在watermark之前先說下時間的概念,在 裡面有各種時間視窗,實際生產中那是以哪個時間為準產生的視窗呢?事件發生的時間?進入flink程式的時間?還是flink開始處理的時間 flink提供了一套設計解決方案 設定可以在 中env直接設定 val env streamexecutionenvir...

時間語義與WaterMark

flink為一條資料從產生到處理輸出整個過程定義了三個比較特殊的時間點分別是eventtime ingestiontime windowprocessingtime。所謂的資料遲到是相對於eventtime來說的。例如 感測器在09 00,09 05,09 10分別產生一條資料。09 00和09 1...