Flink中allowedLateness詳細介紹及思考


默認情況下,當watermark通過end-of-window之后,再有之前的數據到達時,這些數據會被刪除。

為了避免有些遲到的數據被刪除,因此產生了allowedLateness的概念。

簡單來講,allowedLateness就是針對event time而言,對於watermark超過end-of-window之后,還允許有一段時間(也是以event time來衡量)來等待之前的數據到達,以便再次處理這些數據

 

默認情況下,如果不指定allowedLateness,其值是0,即對於watermark超過end-of-window之后,還有此window的數據到達時,這些數據被刪除掉了。

注意:對於trigger是默認的EventTimeTrigger的情況下,allowedLateness會再次觸發窗口的計算,而之前觸發的數據,會buffer起來,直到watermark超過end-of-window + allowedLateness()的時間,窗口的數據及元數據信息才會被刪除。再次計算就是DataFlow模型中的Accumulating(積累)的情況。

https://blog.csdn.net/lmalds/article/details/55259718

面試問題:什么情況下數據會被丟棄或者說不會被計算?

兩種情況:

a.未設置allowedLateness情況下,某條數據屬於某個窗口,但是watermark超過了窗口的結束時間,則該條數據會被丟棄;

b.設置allowedLateness情況下,某條數據屬於某個窗口,但是watermark超過了窗口的結束時間+延遲時間,則該條數據會被丟棄;

 也就是說如果一個key下面的某條數據如果延遲到來太多,就會被丟棄,這個問題無法解決的;

因為其他key的數據會上報就會提高watermark,最后觸發窗口計算。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM