1. 程式人生 > 實用技巧 >Flink Time時間語義

Flink Time時間語義

  對於流式處理,最大的特點是資料上具有時間的屬性特徵,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)

  注意:但是上邊的程式碼沒有指定具體的時間到底是什麼值,後邊程式碼中還需要設定。