您好,登錄后才能下訂單哦!
本篇內容主要講解“flink的trigger知識點有哪些”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“flink的trigger知識點有哪些”吧!
flink的窗口計算的一個小功能-trigger。
窗口這個概念還是比較好理解的,就是在某一個緯度(時間,條數等)上選取一段范圍,這個范圍就是窗口,然后我們后面的計算針對這個窗口進行。今天的例子主要是針對時間窗口進行講解。
不得不說flink支持的窗口操作還是比較豐富的:
會話窗口、滾動窗口、滑動窗口等。
就拿滑動窗口舉例子,滑動窗口故名思意就是除了在時間維度上開窗之外,我們還要指定一下這個窗口以什么樣的步子在時間尺度上移動,這個就叫滑動間隔,如下圖:
從而可以得到滑動窗口兩個重要的參數就是窗口大小和滑動間隔。
對于flink的窗口操作,尤其是基于事件時間的窗口操作,大家還要掌三個個重要的知識點:
窗口分配器:就是決定著流入flink的數據,該屬于哪個窗口。
時間戳抽取器/watermark生成器:抽取時間戳并驅動著程序正常執行。
trigger:決定著數據啥時候落地。
這些我們后面會在星球里一一講解,本文主要是講一下trigger。
回想一下spark streaming的窗口操作,其實就是一個更大的批處理,窗口按照指定的滑動間隔去滑動,然后窗口和滑動間隔的大小是批處理的整數倍。
數據啥時候處理結束并落地呢?
滑動間隔就是計算的周期。那么處理時間就是從窗口開始到數據落地所需要的時間,該時間正常情況下要小于等于滑動間隔的,否則就會產生隊列擠壓。
其實,這個思想也是spark streaming 的微批處理的思想,也是基于處理時間的思想。
而flink不是,flink是真正的實時處理,數據流入flink的source之后,假如需要窗口函數,我們就要使用一定的規則來判斷或者叫決定該數據應該屬于哪個窗口,然后是窗口要是基于事件時間的話我們還要提供時間戳抽取器和watermark分配器,最后還要指定滿足何種條件觸發窗口計算并輸出結果。
那可能會說了觸發窗口計算,不就是時間到窗口結束時間了直接輸出不就行了嗎?這樣輸出的頻率可以直接由滑動間隔來控制了。
實際上,不行的,基于事件時間處理機制,數據會在有些意想不到的情況下滯后,比如forward故障等,這種情況,對于flink來說我們可以設置一些參數來允許處理滯后的元素,比如允許其滯后一小時,那么這個時候實際上窗口輸出間隔就是要加上這個滯后時間了,這時候假如我們想要盡可能的實時輸出的話,就要用到flink的trigger機制。
Trigger定義了何時開始使用窗口計算函數計算窗口。每個窗口分配器都會有一個默認的Trigger。如果,默認的Trigger不能滿足你的需求,你可以指定一個自定義的trigger().
trigger接口有五個方法允許trigger對不同的事件做出反應:
onElement():進入窗口的每個元素都會調用該方法。
onEventTime():事件時間timer觸發的時候被調用。
onProcessingTime():處理時間timer觸發的時候會被調用。
onMerge():有狀態的觸發器相關,并在它們相應的窗口合并時合并兩個觸發器的狀態,例如使用會話窗口。
clear():該方法主要是執行窗口的刪除操作。
關于上述方法需要注意兩點:
1).前三方法決定著如何通過返回一個TriggerResult來操作輸入事件。
CONTINUE:什么都不做。
FIRE:觸發計算。
PURE:清除窗口的元素。
FIRE_AND_PURE:觸發計算和清除窗口元素。
2).這些方法中的任何一個都可用于為將來的操作注冊處理或事件時間計時器
內置和自定義觸發器
Flink內部有一些內置的觸發器:
EventTimeTrigger:基于事件時間和watermark機制來對窗口進行觸發計算。
ProcessingTimeTrigger:基于處理時間觸發。
CountTrigger:窗口元素數超過預先給定的限制值的話會觸發計算。
PurgingTrigger作為其它trigger的參數,將其轉化為一個purging觸發器。
WindowAssigner的默認觸發器適用于很多案例。比如,所有基于事件時間的窗口分配器都用EventTimeTrigger作為默認觸發器。該觸發器會在watermark達到窗口的截止時間時直接觸發計算輸出。
到此,相信大家對“flink的trigger知識點有哪些”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。