Flink學習筆記之WaterMark

2021-10-10 12:58:47 字數 1415 閱讀 6067

event time: 業務系統中事件發生的事件。通常因為各種原因會有部分延遲到達系統,所以需要進行亂序處理。

ingestion time:到達流處理系統的事件,因為是在入口的地方賦值,具有流中統一不變的特性。

processing time:流處理器的本地事件,因為flink是併發執行,各個處理器的本地時鐘還有網路等因素導致差異性較大。

public final class watermark extends streamelement 

/*** returns the timestamp associated with this in milliseconds.

*/public long gettimestamp()

}

通過flink源**可以看出,watermark的本質其實就是乙個時間戳,用於和真正的event time進行比較的時間戳。用來決定亂序的時間是否已經全部到達。

flink基於一種假設:window觸發計算時, eventtime <= watermark 的事件都已經到達來解決亂序問題的。

若是有違反這種假設的event,通常配合sideoutput進行兜底操作。

//指定為eventime時間語義 env.setstreamtimecharacteristic(timecharacteristic.eventtime)

//生成watermark的週期 env.getconfig.setautowatermarkinterval(watermarkinterval)

通常是週期性的獲取watermark,時間間隔由executionconfig.setautowatermarkinterval(...)方式指定。

public inte***ce assignerwithperiodicwatermark***tends timestampassigner
該介面僅定義來乙個返回watermark的方法,flink提供來乙個延遲固定時間的watermark類 「boundedoutofordernesstimestampextractor「可以直接使用。

public inte***ce assignerwithpunctuatedwatermark***tends timestampassigner
該介面通常是有標誌性事件到達觸發watermark時使用。當乙個新的事件到達時,檢查一下是否生成新的watermark。

參考文獻

1. 2. 

3. 

4個角度輕鬆理解 Flink中的Watermark

watermark 理解了,但是想講給別人聽,總是講不清楚,這篇讓我理解了 當我們第一次接觸 flink 時往往會對其中的 watermark 感到困惑。但實際上 watermark 並不複雜。在本文中我們將通過乙個簡單的例子來說明為什麼需要水印以及它們如何工作。在下文中的例子中,我們有乙個帶有時間...

Flink學習筆記之Metrics原理與實戰

目錄 1.概述 2.metrics基礎知識介紹 2.1 metric types 2.2 metric group 3.metrics的使用 3.1 system metrics 3.2 使用者自定義metrics 3.3 獲取metrics的方式 3.4 metric reporter 4.met...

Flink學習筆記(五) flink資料合流

上一章記錄了flink的分流操作,那麼有分流是不是應該有合流呢?當然是有這樣的操作啦 stream1和stream2流需要合併為stream流 1.union合流 2.connect合流 前置配置 streamexecutionenvironment env streamexecutionenvir...