Flink從入門到真香(1三、時間語義的定義)

在watermark以前先說下時間的概念,在https://blog.51cto.com/mapengfei/2554577 裏面有各類時間窗口,實際生產中那是以哪一個時間爲準產生的窗口呢? 事件發生的時間? 進入flink程序的時間?仍是flink開始處理的時間
Flink提供了一套設計解決方案
設置能夠在代碼中env直接設置ide

val env = StreamExecutionEnvironment.getExecutionEnvironment

//    env.setStreamTimeCharacteristic(TimeCharacteristic.EventTime)  //以事件時間做爲窗口聚合
//env.setStreamTimeCharacteristic(TimeCharacteristic.IngestionTime)   //以數據進入flink的時間做爲窗口時間
//    env.setStreamTimeCharacteristic(TimeCharacteristic.ProcessingTime) //以Flink實際處理時間做爲窗口時間

時間語義

Flink從入門到真香(1三、時間語義的定義)

只能說不一樣的場景下,每一個時間都有使用場景,具體根據實際狀況來實施設計

在代碼中設置

咱們能夠直接在代碼中,對執行環境調用setStreamCharacteristic方法,設置流的時間特性
具體的時間,還須要從數據中提取時間戳(timestamp),
若是要用事件時間,還須要設置具體取的哪一個字段和格式,不然flink也不知道你用的哪一個字段code

val env = StreamExecutionEnvironment.getExecutionEnvironment
//從調用時刻開始給env建立的每一個stream追加時間特性
env.setStreamTimeCharcteristic(TimeCharacteristic.EventTime)blog

相關文章
相關標籤/搜索