Flink水印機制(watermark)

2022-06-07 09:21:10 字數 690 閱讀 6117

flink流處理時間方式

設定flink流處理的時間型別

env.setstreamtimecharacteristic(timecharacteristic.eventtime)

問題

1. 使用時間視窗來統計10分鐘內的使用者流量

2. 有乙個時間視窗

3. 有乙個資料,因為網路延遲

4. 時間視窗並沒有將59 這個資料計算進來,導致資料統計不正確

這種處理方式,根據訊息進入到window時間,來進行計算。在網路有延遲的時候,會引起計算誤差。

水印(watermark)

水印就是乙個時間戳,可以給每個訊息新增乙個 允許一定延遲 的時間戳

flink提供新增水印的api

val watermarkdata: datastream[message] =

clicklogdatastream.assigntimestampsandwatermarks(newassignerwithperiodicwatermarks[message]

// 時間戳抽取操作

override def extracttimestamp(t: message, l: long) =

})

Flink流式計算裡的時間和watermark機制

流計算 是相對於 批計算 來的,mapreduce,spark底層的計算方式是目前主流的 批計算 實現方式,很多公司在使用這種方式做大資料處理。但是越來越多的公司目前開始關注 流計算 主要有以下一些原因 1 對處理時間的要求。隨著技術的進步,使用者對 延遲 的忍受能力越來越弱,能更及時發現問題 解決...

flink水印的產生方式

assignerwithpunctuatedwatermarks 每乙個event到來的時候,就會提取一次watermark assignerwithperiodicwatermarks 可以定義乙個最大允許亂序的時間,生成水印的間隔 每n毫秒 使用 executionconfig.setautow...

Flink 事件 水印 計算的關係

看了好久的對水印的介紹,總結出以下的關係。水印 用於衡量事件時間進度的機制 為了解決亂序事件輸出正確的結果。事件 水印 計算的關係 事件生成水印的策略 1 遞增式的水印生成,適合遞增的資料,如果有不遞增的資料,那麼會被認為壞資料處理 2 週期計算,每次生成通過 週期大小,比如設定的週期是10s,那麼...