背景
在flink基于事件的時(shí)間處理中,水位線(xiàn)記錄的生成是一個(gè)很重要的環(huán)節(jié),本文就來(lái)記錄下幾種水位線(xiàn)記錄的生成方式的其中一種:周期性水位線(xiàn)生成器
周期性水位線(xiàn)生成器
1.1 BoundedOutOfOrdernessTimeStampExtractor 他會(huì)接收一個(gè)表示最大延遲的參數(shù),比如1分鐘,意味著如果到達(dá)的元素的事件時(shí)間和之前到達(dá)的元素的最大時(shí)間戳小于1分鐘,那么還可以對(duì)這個(gè)元素進(jìn)行正常的處理,例如歸入正常的窗口中等待處理等,如果超過(guò)1分鐘,那么這個(gè)元素本應(yīng)參與的計(jì)算已經(jīng)完成并發(fā)出結(jié)果,這個(gè)元素現(xiàn)在就是屬于遲到元素。這個(gè)生成器的代碼和下面代碼類(lèi)似:
public class SelfAssigner extends AssignerWithPeriodicWaterMark{
public static long delay = 60000; //1分鐘
public long maxTs=0;//已經(jīng)到達(dá)的元素的最大時(shí)間戳
public long extractTimeStamp(Event event){
maxTs = Max(maxTs, event.getTimeStamp);
return event.getTimeStamp();
}
public long getCurrentWaterMark(){
return maxTs - delay;//具有1分鐘容忍度的水位線(xiàn)
}
}
1.2 直接使用assignAsendingTimeStamp分配器生成水位線(xiàn),它適用于輸入的事件的時(shí)間戳是單調(diào)遞增的,他會(huì)使用當(dāng)前的事件的時(shí)間戳生成水位線(xiàn)記錄文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-728978.html
注意事項(xiàng)
你是否有個(gè)疑問(wèn),如果我一個(gè)自定義的水位線(xiàn)生成器發(fā)出一個(gè)比之前曾經(jīng)發(fā)出的水位線(xiàn)記錄的時(shí)間戳更小的水位線(xiàn)會(huì)有什么影響?答案是 flink會(huì)忽略掉,這就沒(méi)有你想繼續(xù)往下問(wèn)的水位線(xiàn)回退所引發(fā)的一系列問(wèn)題了文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-728978.html
到了這里,關(guān)于flink生成水位線(xiàn)記錄方式--周期性水位線(xiàn)生成器的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!