如何解決Flink水印亂序的數(shù)據(jù)丟失問題呢?
按照數(shù)據(jù)的時(shí)間戳來看,事件是亂序的,則watermark就非常重要了:
亂序怎樣產(chǎn)生的呢
采集過程中導(dǎo)致的亂序
網(wǎng)絡(luò)傳輸過程導(dǎo)致的亂序
亂序?qū)?dǎo)致數(shù)據(jù)丟失

如何解決亂序的數(shù)據(jù)丟失問題呢

等待時(shí)間(亂序程度)如何設(shè)置
等待時(shí)間 = 最大的亂序程度。
經(jīng)驗(yàn)值 => 對自身集群和數(shù)據(jù)的了解,大概估算
對數(shù)據(jù)進(jìn)行抽樣
肯定不會設(shè)置為幾個(gè)小時(shí),一般設(shè)為 秒 或者 分鐘
底層實(shí)現(xiàn)
watermark = maxTimestamp - outOfOrdernessMillis - 1?
= 最大亂序事件時(shí)間 - 亂序程度(等待時(shí)間) - 1ms
需求
根據(jù)socket文本計(jì)算當(dāng)前亂序3秒的數(shù)據(jù)統(tǒng)計(jì)
分配水印機(jī)制-forBoundedOutOfOrderness
參考代碼
