Flink中,如何使用滾動窗口?
滾動窗口下窗口之間之間不重疊,且窗口長度是固定的。
我們可以用TumblingEventTimeWindows和TumblingProcessingTimeWindows創(chuàng)建一個基于Event Time或Processing Time的滾動時間窗口。
窗口的長度可以用org.apache.flink.streaming.api.windowing.time.Time中的seconds、minutes、hours和days來設(shè)置。
下面的代碼展示了如何使用滾動窗口。
代碼中最后一個例子,我們在固定長度的基礎(chǔ)上設(shè)置了偏移(Offset)。
默認(rèn)情況下,時間窗口會做一個對齊,比如設(shè)置一個一小時的窗口,那么窗口的起止時間是[0:00:00.000 - 0:59:59.999)。
如果設(shè)置了Offset,那么窗口的起止時間將變?yōu)閇0:15:00.000 - 1:14:59.999)。Offset可以用在全球不同時區(qū)設(shè)置上,如果系統(tǒng)時間基于格林威治標(biāo)準(zhǔn)時間(UTC-0),中國的當(dāng)?shù)貢r間可以設(shè)置offset為Time.hours(-8)。

注意:
時間窗口使用的是timeWindow()也可以使用window(),比如,input.keyBy(...).timeWindow(Time.seconds(1))。timeWindow()是一種簡寫。
