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,那麼...