在flink 的流式處理中,會涉及到時間的不同概念,如下圖所示:
乙個例子——電影《星球大戰》:
在這個例子中,
事件時間(事情真正傳送的時間):星球大戰1->星球大戰2->星球大戰3->星球大戰4…
處理時間(電影拍攝時間):星球大戰4->星球大戰5->星球大戰6->星球大戰1…
例如,一條日誌進入flink 的時間為2017-11-12 10:00:00.123,到達window 的系統時間為2017-11-12 10:00:01.234,日誌的內容如下:
2017-11-02 18:37:15.624 info fail over to rm2對於業務來說,要統計1min 內的故障日誌個數,哪個時間是最有意義的?——eventtime,因為我們要根據日誌的生成時間進行統計。eventtime可以從日誌中的時間戳提取。
在flink 的流式處理中,絕大部分的業務都會使用eventtime,一般只在eventtime 無法使用時,才會被迫使用processingtime 或者ingestiontime。如果要使用eventtime,那麼需要引入eventtime 的時間屬性,引入方式如下所示:
val env = streamexecutionenvironment.getexecutionenvironment
// 從呼叫時刻開始給env 建立的每乙個stream 追加時間特徵
env.setstreamtimecharacteristic(timecharacteristic.eventtime)
Flink學習筆記(五) flink資料合流
上一章記錄了flink的分流操作,那麼有分流是不是應該有合流呢?當然是有這樣的操作啦 stream1和stream2流需要合併為stream流 1.union合流 2.connect合流 前置配置 streamexecutionenvironment env streamexecutionenvir...
Flink學習筆記1 Flink框架api介紹
1.獲得 execution 環境 getexecutionenvironment createlocalenvironment createremoteenvironment string host,int port,string.jarfiles 批處理示例 executionenvironme...
Flink學習筆記2 Flink框架api介紹
使用 transform 函式 mapfunction 介面 其中泛型的第一 string 代表輸入型別,第二個 integer 代表輸出型別 class mymapfunction implements mapfunction data.map newmymapfunction lambda表示式...