天天看點

(12)flink的Time與Window操作

文章目錄

      • Time
      • Window
        • 概述
        • Window類型
          • CountWindow
          • TimeWindow
            • 1. 滾動視窗
            • 2. 滑動視窗(Sliding Windows)
            • 3. 會話視窗(Session Windows)

流式進行中會涉及時間的不同概念

(12)flink的Time與Window操作

Event Time:

是事件建立的時間。它通常由事件中的時間戳描述,例如采集的日志資料中,每一條日志都會記錄自己的生成時間,Flink通過時間戳配置設定器通路事件時間戳。

Ingestion Time

資料進入Flink的時間。

Processing Time

是每一個執行基于時間操作的算子的本地系統時間,與機器相關,預設的時間屬性就是Processing Time。

例如,一條日志進入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,因為我們要根據日志的生成時間進行統計。

streaming流式計算是一種被設計用于處理無限資料集的資料處理引擎,而無限資料集是指一種不斷增長的本質上無限的資料集,而window是一種切割無限資料為有限塊進行處理的手段。

Window是無限資料流處理的核心,Window将一個無限的stream拆分成有限大小的“buckets”桶,我們可以在這些桶上做計算操作。

Window可以分成兩類:

按照指定的資料條數生成一個Window,與時間無關。

按照時間生成Window

對于TimeWindow,可以根據視窗實作原理的不同分成三類:滾動視窗(Tumbling Window)、滑動視窗(Sliding Window)和會話視窗(Session Window)

1. 滾動視窗

将資料依據固定的視窗長度對資料進行切片。

特點: 時間對齊,視窗長度固定,沒有重疊

滾動視窗配置設定器将每個元素配置設定到一個指定視窗大小的視窗中,滾動視窗有一個固定的大小,并且不會出現重疊。例如:如果你指定了一個5分鐘大小的滾動視窗,視窗的建立如下圖所示:

(12)flink的Time與Window操作

适用場景:适合做BI統計等(做每個時間段的聚合計算)。

2. 滑動視窗(Sliding Windows)