Flink之事件時間 水位線

2021-10-10 01:18:56 字數 696 閱讀 4671

flink為常見的事件時間處理操作提供了直觀且易於使用的原語,同時暴露了表達性很強的api,使用者可以使用自定義運算元實現更高階的事件時間應用程式。很好地理解flink的內部時間處理,對於實現這樣的高階應用程式會有很大幫助,有時也是必需的。上一章介紹了flink利用兩個概念來支援事件時間語義:記錄時間戳(timestamps)和水位線(watermarks)。接下來,我們將描述flink如何在內部實現並處理時間戳和水位線,進而支援具有事件時間語義的流式應用程式。

由flink事件時間流應用程式處理的所有記錄都必須伴有時間戳。時間戳將資料與特定時間點相關聯,通常就是資料所表示的事件發生的時間點。而只要時間戳大致跟資料流保持一致,基本上隨著資料流的前進而增大,應用程式就可以自由選擇時間戳的含義。不過正如「時間語義」一節中所討論的,在現實場景中,時間戳基本上都是亂序的,所以採用「事件時間」而非「處理事件」往往會顯得更為重要。

當flink以事件時間模式處理資料流時,它會根據資料記錄的時間戳來處理基於時間的運算元。例如,時間視窗運算元根據相關時間戳將資料分配給不同的時間視窗。flink將時間戳編碼為16位元組的長整型值,並將其作為元資料附加到資料記錄中。它的內建運算子會將這個長整型值解釋為乙個具有毫秒精度的unix時間戳,也就是1970-01-01-00:00:00.000以來的毫秒數。當然,如果使用者進行了自定義,那麼運算子可以有自己的解釋,例如,可以將精度調整到微秒。

除了時間戳,基於事件時間的flink應用程式還必須支援水位線(

觸控事件之事件傳遞

uiview是如何判定這個事件是否是自己應該處理的呢?hittest withevent 方法的處理流程如下 呼叫當前view的pointinside withevent 方法來判定觸控點是否在當前view內部,如果返回no,則hittest withevent 返回nil 如果返回yes,則向當前...

Flink的時間和視窗的使用 水位線的設定

window分為兩大類 countwindow 按照指定的資料條數生成乙個window,與時間無關。timewindow 按照時間生成window 對於timewindow,可以根據視窗實現原理的不同分成三類 滾動視窗 tumbling window 滑動視窗 sliding window 和會話視...

RT thread核心之事件

一 事件控制塊 在include rtdef.h中 ifdef rt using event flag defintions in event define rt event flag and 0x01 logic and define rt event flag or 0x02 logic or ...