千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機(jī)構(gòu)

手機(jī)站
千鋒教育

千鋒學(xué)習(xí)站 | 隨時(shí)隨地免費(fèi)學(xué)

千鋒教育

掃一掃進(jìn)入千鋒手機(jī)站

領(lǐng)取全套視頻
千鋒教育

關(guān)注千鋒學(xué)習(xí)站小程序
隨時(shí)隨地免費(fèi)學(xué)習(xí)課程

當(dāng)前位置:首頁  >  應(yīng)聘面試  >  大數(shù)據(jù)面試題  > 大數(shù)據(jù)面數(shù)據(jù):Flink Allowed Lateness & Side OutPut?

大數(shù)據(jù)面數(shù)據(jù):Flink Allowed Lateness & Side OutPut?

來源:千鋒教育
發(fā)布人:wjy
時(shí)間: 2022-09-02 16:59:00 1662109140

雖說水位線(Watermark)表明早于它的事件不應(yīng)該再出現(xiàn),但是接收到水位線以前的的消息是不可避免的,這就是所謂的遲到事件。實(shí)際上遲到事件是亂序事件的特例,和一般亂序事件不同的是它們的亂序程度超出了水位線的預(yù)計(jì),導(dǎo)致窗口在它們到達(dá)之前已經(jīng)關(guān)閉。

遲到事件出現(xiàn)時(shí)窗口已經(jīng)關(guān)閉并產(chǎn)出了計(jì)算結(jié)果,因此處理的方法有3種: 

- 重新激活已經(jīng)關(guān)閉的窗口并重新計(jì)算以修正結(jié)果。

- 將遲到事件收集起來另外處理。 

- 將遲到事件視為錯(cuò)誤消息并丟棄。

Flink 默認(rèn)的處理方式是第3種直接丟棄,其他兩種方式分別使用Allowed Lateness和 Side Output。

Side Output機(jī)制可以將遲到事件單獨(dú)放入一個(gè)數(shù)據(jù)流分支,這會(huì)作為 window計(jì)算結(jié)果的副產(chǎn)品,以便用戶獲取并對(duì)其進(jìn)行特殊處理。Allowed Lateness機(jī)制允許用戶設(shè)置一個(gè)允許的最大遲到時(shí)長。

Flink 會(huì)在窗口關(guān)閉后一直保存窗口的狀態(tài)直至超過允許遲到時(shí)長,這期間的遲到事件不會(huì)被丟棄,而是默認(rèn)會(huì)觸發(fā)窗口重新計(jì)算。

因?yàn)楸4娲翱跔顟B(tài)需要額外內(nèi)存,并且如果窗口計(jì)算使用了 ProcessWindowFunction API 還可能使得每個(gè)遲到事件觸發(fā)一次窗口的全量計(jì)算,代價(jià)比較大,所以允許遲到時(shí)長不宜設(shè)得太長,遲到事件也不宜過多,否則應(yīng)該考慮降低水位線提高的速度或者調(diào)整算法。 

這里總結(jié)機(jī)制為: 

- 窗口window 的作用是為了周期性的獲取數(shù)據(jù)。 

- watermark的作用是防止數(shù)據(jù)出現(xiàn)亂序(經(jīng)常),事件時(shí)間內(nèi)獲取不到指定的全部數(shù)據(jù),而做的一種保險(xiǎn)方法。 

- allowLateNess是將窗口關(guān)閉時(shí)間再延遲一段時(shí)間。 

- sideOutPut是最后兜底操作,所有過期延遲數(shù)據(jù),指定窗口已經(jīng)徹底關(guān)閉了,就會(huì)把數(shù)據(jù)放到側(cè)輸出流。

千鋒教育

tags:
聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
10年以上業(yè)內(nèi)強(qiáng)師集結(jié),手把手帶你蛻變精英
請(qǐng)您保持通訊暢通,專屬學(xué)習(xí)老師24小時(shí)內(nèi)將與您1V1溝通
免費(fèi)領(lǐng)取
今日已有369人領(lǐng)取成功
劉同學(xué) 138****2860 剛剛成功領(lǐng)取
王同學(xué) 131****2015 剛剛成功領(lǐng)取
張同學(xué) 133****4652 剛剛成功領(lǐng)取
李同學(xué) 135****8607 剛剛成功領(lǐng)取
楊同學(xué) 132****5667 剛剛成功領(lǐng)取
岳同學(xué) 134****6652 剛剛成功領(lǐng)取
梁同學(xué) 157****2950 剛剛成功領(lǐng)取
劉同學(xué) 189****1015 剛剛成功領(lǐng)取
張同學(xué) 155****4678 剛剛成功領(lǐng)取
鄒同學(xué) 139****2907 剛剛成功領(lǐng)取
董同學(xué) 138****2867 剛剛成功領(lǐng)取
周同學(xué) 136****3602 剛剛成功領(lǐng)取
相關(guān)推薦HOT
內(nèi)部表和外部表(重點(diǎn))

hive外部表是使用external關(guān)鍵字并指定一個(gè)hdfs目錄創(chuàng)建的表。hive內(nèi)部表在創(chuàng)建時(shí)會(huì)在對(duì)應(yīng)hive目錄下創(chuàng)建相應(yīng)的文件夾,外部表則以指定文件夾為...詳情>>

2022-09-02 17:21:00
Flink checkpoint和savepoint區(qū)別

Checkpoint是為runtime準(zhǔn)備的,Savepoint 是為用戶準(zhǔn)備的。Checkpoint 機(jī)制的目標(biāo)在于保證Flink作業(yè)意外崩潰重啟不影響exactly once 準(zhǔn)確性,通...詳情>>

2022-09-02 16:59:22
Flink State?

State:指一個(gè)具體的Task/Operator的狀態(tài)。State可以被記錄,在失敗的情況下數(shù)據(jù)還可以恢復(fù),F(xiàn)link中有兩種基本類型的State: Keyed State, Op...詳情>>

2022-09-02 16:59:19
Flink反壓機(jī)制?

Flink 內(nèi)部是基于producer-consumer模型來進(jìn)行消息傳遞的,F(xiàn)link的反壓設(shè)計(jì)也是基于這個(gè)模型。Flink 使用了高效有界的分布式阻塞隊(duì)列,就像 Jav...詳情>>

2022-09-02 16:59:16
大數(shù)據(jù)面數(shù)據(jù):Flink Allowed Lateness & Side OutPut?

雖說水位線(Watermark)表明早于它的事件不應(yīng)該再出現(xiàn),但是接收到水位線以前的的消息是不可避免的,這就是所謂的遲到事件。實(shí)際上遲到事件是亂...詳情>>

2022-09-02 16:59:00
快速通道