Flink基於EventTime和WaterMark處理亂序事件和晚到的數據(三)

在實際的業務中,我們經常會遇到數據遲到的情況,這個時候基於窗口進行計算的結果就不對了,Flink中watermark就是爲了解決這個問題的,理解watermark之前,先來說一下flink中的三個與流數據相關的概念,ProcessTime、EventTime、IngestionTime,不然很難理解watermark是怎麼回事.

我們先來看一下官網給出的一張圖,非常形象地展示了Process Time、Event Time、Ingestion Time這三個時間分別所處的位置,如下圖所示:

我們按照上圖從左到右的順序介紹這幾個概念,依次是event time,ingestion time,processing time.

Event Time

事件時間:事件時間是每條事件在它產生的時候記錄的時間,該時間記錄在事件中,在處理的時候可以被提取出來。小時的時間窗處理將會包含事件時間在該小時內的所有事件,而忽略事件到達的時間和到達的順序事件時間對於亂序、延時、或者數據重放等情況,都能給出正確的結果。事件時間依賴於事件本身,而跟物理時鐘沒有關係。利用事件時間編程必須指定如何生成事件時間的watermark,這是使用事件時間處理事件的機制。機制是這樣描述的:事件時間處理通常存在一定的延時,因此自然的需要爲延時和無序的事件等待一段時間。因此,使用事件時間編程通常需要與處理時間相結合。

Ingestion Time

攝入時間:攝入時間是事件進

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章