Flink Time時間語義
阿新 • • 發佈:2020-11-28
對於流式處理,最大的特點是資料上具有時間的屬性特徵,Flink根據時間產生的位置不同,將時間區分為三種時間語義,分別為事件生成時間(Event Time),時間接入時間(Ingestion Time)和事件處理時間(Processing Time)。
- Event Time:事件產生的時間,它通常由事件中的時間戳描述。
- Ingestion Time:事件進入Flink的時間
- Processing Time:事件被處理時當前系統的時間
資料從終端產生,或者從系統中產生的過程中生成的時間為事件生成時間,當資料經過訊息中介軟體傳入到Flink系統中,在DataSource中接入的時候會生成事件接入時間,當資料在Flink系統中通過各個運算元例項執行轉換操作的過程中,運算元例項所在系統的時間為資料處理時間。
在Flink中預設情況下使用是Processing Time時間語義,如果使用者選擇使用Event Time或者Ingestion Time語義,則需要在建立的StreamExecutionEnvironment中呼叫setStreamTimeCharacteristic()方法設定系統的時間概念,如下程式碼使用TimeCharacteristic.EventTime作為系統的時間語義。
//設定使用EventTime streamEnv.setStreamTimeCharacteristic(TimeCharacteristic.EventTime) //設定使用IngestionTime streamEnv.setStreamTimeCharacteristic(TimeCharacteristic.IngestionTime)
注意:但是上邊的程式碼沒有指定具體的時間到底是什麼值,後邊程式碼中還需要設定。