精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Apache Flink 漫談系列(03) - Watermark

開發 開發工具
本節以一個流計算常見的亂序問題介紹了Apache Flink如何利用Watermark機制來處理亂序問題.。本篇內容在一定程度上也體現了EventTime Window中的Trigger機制依賴了Watermark。

實際問題(亂序)

在介紹Watermark相關內容之前我們先拋出一個具體的問題,在實際的流式計算中數據到來的順序對計算結果的正確性有至關重要的影響,比如:某數據源中的某些數據由于某種原因(如:網絡原因,外部存儲自身原因)會有5秒的延時,也就是在實際時間的第1秒產生的數據有可能在第5秒中產生的數據之后到來(比如到Window處理節點)。選具體某個delay的元素來說,假設在一個5秒的Tumble窗口(詳見Window介紹章節),有一個EventTime是 11秒的數據,在第16秒時候到來了。圖示第11秒的數據,在16秒到來了,如下圖:

那么對于一個Count聚合的Tumble(5s)的window,上面的情況如何處理才能window2=4,window3=2 呢?

Apache Flink的時間類型

開篇我們描述的問題是一個很常見的TimeWindow中數據亂序的問題,亂序是相對于事件產生時間和到達Apache Flink 實際處理算子的順序而言的,關于時間在Apache Flink中有如下三種時間類型,如下圖:

Apache Flink

(1)ProcessingTime

ProcessingTime是數據流入到具體某個算子時候相應的系統時間。ProcessingTime 有***的性能和***的延遲。但在分布式計算環境中ProcessingTime具有不確定性,相同數據流多次運行有可能產生不同的計算結果。

(2)IngestionTime

IngestionTime是數據進入Apache Flink框架的時間,是在Source Operator中設置的。與ProcessingTime相比可以提供更可預測的結果,因為IngestionTime的時間戳比較穩定(在源處只記錄一次),同一數據在流經不同窗口操作時將使用相同的時間戳,而對于ProcessingTime同一數據在流經不同窗口算子會有不同的處理時間戳。

(3)EventTime

EventTime是事件在設備上產生時候攜帶的。在進入Apache Flink框架之前EventTime通常要嵌入到記錄中,并且EventTime也可以從記錄中提取出來。在實際的網上購物訂單等業務場景中,大多會使用EventTime來進行數據計算。

開篇描述的問題和本篇要介紹的Watermark所涉及的時間類型均是指EventTime類型。

什么是Watermark

Watermark是Apache Flink為了處理EventTime 窗口計算提出的一種機制,本質上也是一種時間戳,由Apache Flink Source或者自定義的Watermark生成器按照需求Punctuated或者Periodic兩種方式生成的一種系統Event,與普通數據流Event一樣流轉到對應的下游算子,接收到Watermark Event的算子以此不斷調整自己管理的EventTime clock。 Apache Flink 框架保證Watermark單調遞增,算子接收到一個Watermark時候,框架知道不會再有任何小于該Watermark的時間戳的數據元素到來了,所以Watermark可以看做是告訴Apache Flink框架數據流已經處理到什么位置(時間維度)的方式。 Watermark的產生和Apache Flink內部處理邏輯如下圖所示:

ProcessingTime

Watermark的產生方式

目前Apache Flink 有兩種生產Watermark的方式,如下:

  • Punctuated - 數據流中每一個遞增的EventTime都會產生一個Watermark。在實際的生產中Punctuated方式在TPS很高的場景下會產生大量的Watermark在一定程度上對下游算子造成壓力,所以只有在實時性要求非常高的場景才會選擇Punctuated的方式進行Watermark的生成。
  • Periodic - 周期性的(一定時間間隔或者達到一定的記錄條數)產生一個Watermark。在實際的生產中Periodic的方式必須結合時間和積累條數兩個維度繼續周期性產生Watermark,否則在極端情況下會有很大的延時。

所以Watermark的生成方式需要根據業務場景的不同進行不同的選擇。

Watermark的接口定義

對應Apache Flink Watermark兩種不同的生成方式,我們了解一下對應的接口定義,如下:

  • Periodic Watermarks - AssignerWithPeriodicWatermarks
    1. /** 
    2. * Returns the current watermark. This method is periodically called by the 
    3. * system to retrieve the current watermark. The method may return {@code null} to 
    4. * indicate that no new Watermark is available. 
    5. <p>The returned watermark will be emitted only if it is non-null and itsTimestamp 
    6. * is larger than that of the previously emitted watermark (to preserve the contract of 
    7. * ascending watermarks). If the current watermark is still 
    8. * identical to the previous one, no progress in EventTime has happened since 
    9. * the previous call to this method. If a null value is returned, or theTimestamp 
    10. * of the returned watermark is smaller than that of the last emitted one, then no 
    11. * new watermark will be generated. 
    12. <p>The interval in which this method is called and Watermarks are generated 
    13. * depends on {@link ExecutionConfig#getAutoWatermarkInterval()}. 
    14. * @see org.Apache.flink.streaming.api.watermark.Watermark 
    15. * @see ExecutionConfig#getAutoWatermarkInterval() 
    16. * @return {@code Null}, if no watermark should be emitted, or the next watermark to emit. 
    17. */ 
    18. @Nullable 
    19. Watermark getCurrentWatermark(); 
  • Punctuated Watermarks - AssignerWithPunctuatedWatermarks
    1. public interface AssignerWithPunctuatedWatermarks<T> extendsTimestampAssigner<T> { 
    2.  
    3. /** 
    4. * Asks this implementation if it wants to emit a watermark. This method is called right after 
    5. * the {@link #extractTimestamp(Object, long)} method. 
    6. <p>The returned watermark will be emitted only if it is non-null and itsTimestamp 
    7. * is larger than that of the previously emitted watermark (to preserve the contract of 
    8. * ascending watermarks). If a null value is returned, or theTimestamp of the returned 
    9. * watermark is smaller than that of the last emitted one, then no new watermark will 
    10. * be generated. 
    11. <p>For an example how to use this method, see the documentation of 
    12. * {@link AssignerWithPunctuatedWatermarks this class}. 
    13. * @return {@code Null}, if no watermark should be emitted, or the next watermark to emit. 
    14. */ 
    15. @Nullable 
    16. Watermark checkAndGetNextWatermark(T lastElement, long extractedTimestamp);} 
  • AssignerWithPunctuatedWatermarks 繼承了TimestampAssigner接口 -TimestampAssigner
    1. public interfaceTimestampAssigner<T> extends Function { 
    2.  
    3. /** 
    4. * Assigns aTimestamp to an element, in milliseconds since the Epoch. 
    5. <p>The method is passed the previously assignedTimestamp of the element. 
    6. * That previousTimestamp may have been assigned from a previous assigner, 
    7. * by ingestionTime. If the element did not carry aTimestamp before, this value is 
    8. * {@code Long.MIN_VALUE}. 
    9. * @param element The element that theTimestamp is wil be assigned to. 
    10. * @param previousElementTimestamp The previous internalTimestamp of the element, 
    11. * or a negative value, if noTimestamp has been assigned, yet. 
    12. * @return The newTimestamp. 
    13. */ 
    14. long extractTimestamp(T element, long previousElementTimestamp); 

從接口定義可以看出,Watermark可以在Event(Element)中提取EventTime,進而定義一定的計算邏輯產生Watermark的時間戳。

Watermark解決如上問題

從上面的Watermark生成接口和Apache Flink內部對Periodic Watermark的實現來看,Watermark的時間戳可以和Event中的EventTime 一致,也可以自己定義任何合理的邏輯使得Watermark的時間戳不等于Event中的EventTime,Event中的EventTime自產生那一刻起就不可以改變了,不受Apache Flink框架控制,而Watermark的產生是在Apache Flink的Source節點或實現的Watermark生成器計算產生(如上Apache Flink內置的 Periodic Watermark實現),Apache Flink內部對單流或多流的場景有統一的Watermark處理。

回過頭來我們在看看Watermark機制如何解決上面的問題,上面的問題在于如何將遲來的EventTime 位11的元素正確處理。要解決這個問題我們還需要先了解一下EventTime window是如何觸發的? EventTime window 計算條件是當Window計算的Timer時間戳 小于等于 當前系統的Watermak的時間戳時候進行計算。

  • 當Watermark的時間戳等于Event中攜帶的EventTime時候,上面場景(Watermark=EventTime)的計算結果如下:

上面對應的DDL(Alibaba 對 Apache Flink 的增強分支)定義如下:

  1. CREATE TABLE source( 
  2. ..., 
  3. Event_timeTimeStamp, 
  4. WATERMARK wk1 FOR Event_time as withOffset(Event_time, 0) 
  5. ) with ( 
  6. ... 
  7. ); 
  • 如果想正確處理遲來的數據可以定義Watermark生成策略為 Watermark = EventTime -5s, 如下:

上面對應的DDL(Alibaba 對 Apache Flink 的增強分支)定義如下:

  1. CREATE TABLE source( 
  2. ..., 
  3. Event_timeTimeStamp, 
  4. WATERMARK wk1 FOR Event_time as withOffset(Event_time, 5000) 
  5. ) with ( 
  6. ... 
  7. ); 

上面正確處理的根源是我們采取了 延遲觸發 window 計算 的方式正確處理了 Late Event. 與此同時,我們發現window的延時觸發計算,也導致了下游的LATENCY變大,本例子中下游得到window的結果就延遲了5s。

多流的Watermark處理

在實際的流計算中往往一個job中會處理多個Source的數據,對Source的數據進行GroupBy分組,那么來自不同Source的相同key值會shuffle到同一個處理節點,并攜帶各自的Watermark,Apache Flink內部要保證Watermark要保持單調遞增,多個Source的Watermark匯聚到一起時候可能不是單調自增的,這樣的情況Apache Flink內部是如何處理的呢?如下圖所示:

Apache Flink內部實現每一個邊上只能有一個遞增的Watermark, 當出現多流攜帶Eventtime匯聚到一起(GroupBy or Union)時候,Apache Flink會選擇所有流入的Eventtime中最小的一個向下游流出。從而保證watermark的單調遞增和保證數據的完整性。如下圖:

小結

本節以一個流計算常見的亂序問題介紹了Apache Flink如何利用Watermark機制來處理亂序問題。本篇內容在一定程度上也體現了EventTime Window中的Trigger機制依賴了Watermark(后續Window篇章會介紹)。Watermark機制是流計算中處理亂序,正確處理Late Event的核心手段。

# 關于點贊和評論

本系列文章難免有很多缺陷和不足,真誠希望讀者對有收獲的篇章給予點贊鼓勵,對有不足的篇章給予反饋和建議,先行感謝大家!

作者孫金城,花名 金竹,目前就職于阿里巴巴,自2015年以來一直投入于基于Apache Flink的阿里巴巴計算平臺Blink的設計研發工作。

【本文為51CTO專欄作者“金竹”原創稿件,轉載請聯系原作者】

戳這里,看該作者更多好文

責任編輯:趙寧寧 來源: 51CTO專欄
相關推薦

2022-07-13 13:03:29

流計算亂序

2022-06-10 17:26:07

數據集計算

2022-07-13 12:53:59

數據存儲

2018-09-26 08:44:22

Apache Flin流計算計算模式

2018-10-16 08:54:35

Apache Flin流計算State

2018-09-26 07:50:52

Apache Flin流計算計算模式

2018-11-20 07:59:43

Apache Flin JOIN算子代碼

2018-11-29 09:01:26

Apache FlinJOIN代碼

2018-11-14 09:01:23

Apache FlinSQL代碼

2018-10-22 21:43:39

Apache Flin流計算Fault Toler

2019-01-03 10:17:53

Apache FlinTable API代碼

2018-12-11 17:28:22

Apache FlinJOIN代碼

2022-07-12 10:38:25

分布式框架

2018-11-07 08:48:31

Apache Flin持續查詢流計算

2019-01-15 08:50:12

Apache FlinKafka分布式

2018-10-30 14:08:45

Apache Flin流表對偶duality

2018-12-29 08:16:32

Apache FlinJOIN代碼

2024-04-09 07:50:59

Flink語義Watermark

2020-04-09 11:08:30

PyFlinkJAR依賴

2022-05-19 08:47:30

Flinkwatermark窗口計算
點贊
收藏

51CTO技術棧公眾號

九色porny自拍视频在线观看| 国产精品欧美亚洲| 神马久久av| 欧美日韩在线精品一区二区三区激情 | 99热国产在线观看| 国产精品探花在线观看| 欧美精品视频www在线观看| 喜爱夜蒲2在线| 亚洲 小说区 图片区 都市| 麻豆精品国产传媒mv男同| 久久99精品视频一区97| 中文字字幕码一二三区| 久久精品资源| 欧美日韩激情小视频| 一区二区三区欧美成人| 亚洲精品久久久久avwww潮水| 久久精品午夜| 欧美极品欧美精品欧美视频 | 国产精品私拍pans大尺度在线| caoporn91| 残酷重口调教一区二区| 亚洲电影天堂av| 亚洲污视频在线观看| 黑人极品ⅴideos精品欧美棵| 国产天堂亚洲国产碰碰| 国产高清精品一区二区三区| 精品国产青草久久久久96| 激情久久久久久久| 欧美大肥婆大肥bbbbb| 性の欲びの女javhd| 欧美成人基地| 日韩欧美一区二区免费| 久久婷婷综合色| 欧美xx视频| 欧美日韩国产精品专区 | 精品无码久久久久久久动漫| 国产精品乱码一区二区| 日韩—二三区免费观看av| 91黑丝在线观看| 久久精品国产亚洲av麻豆色欲| 一区二区日韩欧美| 日韩中文字幕第一页| 日韩女同一区二区三区| 色综合中文网| 亚洲欧美一区二区精品久久久| 男女一区二区三区| 久久综合另类图片小说| 亚洲大胆美女视频| 日本五十肥熟交尾| 大奶在线精品| 亚洲成在人线av| 黄色录像a级片| 久久久伦理片| 亚洲精品一区久久久久久| 朝桐光av一区二区三区| 欧美黄色录像| 精品网站999www| 蜜桃传媒一区二区亚洲av| 亚洲小说图片视频| 亚洲一级免费视频| 欧美三级视频网站| 日韩在线理论| 久久亚洲国产成人| 国产一级免费观看| 一区二区三区导航| 热re91久久精品国99热蜜臀| 午夜无码国产理论在线| 亚洲欧美日韩国产| 2019中文字幕免费视频| 九九热在线视频播放| 国产精品最新自拍| 国产精品久久久久久网站| 波多野结衣不卡| 奇米一区二区三区av| 国产一区二区色| 99re只有精品| 丁香天五香天堂综合| 国产伦视频一区二区三区| 香蕉久久国产av一区二区| 久久欧美一区二区| 一区二区视频国产| 肉肉视频在线观看| 欧美日韩免费区域视频在线观看| 国产精品人人妻人人爽人人牛| 黄色精品视频网站| 日韩视频在线永久播放| 国产中文字幕一区二区| 精品久久影院| 久99久在线视频| 久久久久在线视频| 国产一区二区网址| 久久99精品久久久久子伦| 岛国在线视频| 亚洲图片欧美一区| 天天色综合天天色| 精品国产一区二区三区成人影院| 亚洲色图在线观看| 欧美成人三级视频| 日日摸夜夜添夜夜添精品视频 | 国产精品啪啪啪视频| 999福利在线视频| 欧美日韩在线不卡| 性活交片大全免费看| 国产一区二区三区日韩精品| 欧美成人免费在线视频| 中文字幕xxxx| 成人妖精视频yjsp地址| 天天综合色天天综合色hd| 伊人影院蕉久影院在线播放| 色乱码一区二区三区88| 日本少妇xxx| 精品国产视频| 97碰碰碰免费色视频| 国产男女裸体做爰爽爽| 久久久不卡影院| 极品粉嫩国产18尤物| 日韩免费在线电影| 亚洲人成网站777色婷婷| 国产一级在线观看视频| 激情文学综合插| 日韩福利二区| 女厕盗摄一区二区三区| 日韩一区二区在线免费观看| 国产成人在线网址| 视频一区国产视频| 久久久一本精品99久久精品| 欧美韩日亚洲| 欧美一级一级性生活免费录像| 91精彩刺激对白露脸偷拍| 99精品免费| 国产高清在线一区| 在线中文免费视频| 欧美一区二区三区在线电影| 中文乱码字幕高清一区二区| 青娱乐精品在线视频| 欧美日韩大片一区二区三区| 3344国产永久在线观看视频| 欧美大片一区二区| 欧美毛片在线观看| 国内精品伊人久久久久av影院| 水蜜桃亚洲一二三四在线| 91av亚洲| 亚洲欧美日韩精品久久奇米色影视| 日韩精品一区二区三| 成人v精品蜜桃久久一区| 800av在线免费观看| 一区二区三区在线免费看| 欧美刺激性大交免费视频| 国产区精品在线| 亚洲视频香蕉人妖| 日韩欧美中文视频| 欧美成人综合| 91久久精品www人人做人人爽| 黄视频在线观看网站| 91麻豆精品国产91久久久更新时间 | 国产性生交xxxxx免费| 久久99高清| 国产精品www色诱视频| 成年网站在线| 欧美日韩夫妻久久| 日韩成人短视频| 国产成人免费在线视频| 欧美极品少妇无套实战| 国产精品天天看天天狠| 91av视频导航| 国产三级在线看| 欧美日韩视频专区在线播放| 亚洲熟女毛茸茸| 国产成人av电影在线观看| 韩日视频在线观看| 自拍欧美一区| 国产精品影片在线观看| a视频在线观看免费| 欧美精品一区二区三区蜜桃视频 | 男人的天堂av网| 狠狠色丁香婷婷综合| 亚洲精品国产suv一区88| 国产精品zjzjzj在线观看| 97在线精品国自产拍中文| 高清在线观看av| 欧美一级黄色大片| 国产成人无码精品| 中文字幕精品一区二区精品绿巨人| 可以看污的网站| 好吊视频一区二区三区四区| 蜜桃视频在线观看91| 日日夜夜精品| 欧美激情国内偷拍| 国产小视频免费在线网址| 欧美精品色一区二区三区| 国产免费观看av| 亚洲欧洲精品一区二区三区| 日本不卡视频一区| 免费的国产精品| 草b视频在线观看| 99久久.com| 另类欧美小说| 日韩精品成人在线观看| 日本午夜人人精品| 手机av免费在线| 最新日韩中文字幕| 日韩精品视频无播放器在线看 | 午夜视频在线免费播放| 欧美日韩黄色影视| 亚洲精品中文字幕乱码三区91| √…a在线天堂一区| 美国黄色a级片| 国产不卡视频一区| www.国产视频.com| 丝袜诱惑制服诱惑色一区在线观看| 一级特黄妇女高潮| 日本a口亚洲| 欧美日韩精品不卡| 成人三级av在线| 亚洲999一在线观看www| 欧美韩国亚洲| 26uuu国产精品视频| 日本aa在线| 色综合伊人色综合网| 瑟瑟在线观看| 亚洲精品电影久久久| 国产人妻精品一区二区三| 欧美日韩一区二区三区四区五区| 免费看日韩毛片| 亚洲一二三专区| 久久久无码精品亚洲国产| 国产精品久久久久久久久免费丝袜 | 欧美精品久久久久久久久| 久草中文在线观看| www.国产一区| 日日夜夜精品一区| 中文字幕日韩专区| 成年人在线视频| 伊人久久久久久久久久久| 男同在线观看| 亚洲男人天堂网| 加勒比一区二区三区在线| 精品中文视频在线| 神马精品久久| 日韩av在线精品| 头脑特工队2免费完整版在线观看| 欧美不卡一区二区| 色欲av伊人久久大香线蕉影院| 91精品国产欧美日韩| 99久久久国产精品无码免费| 制服丝袜亚洲播放| jizz中国少妇| 日韩午夜在线观看视频| 亚洲av无码乱码国产精品久久| 欧美一区二区三区四区五区 | 国产成人免费av在线| 人妻换人妻仑乱| 福利一区二区在线| xxxxxx黄色| 26uuu精品一区二区| 日韩av在线看免费观看| 日本一区二区免费在线观看视频 | 国产成人精品久久亚洲高清不卡 | 成人女保姆的销魂服务| 亚洲欧洲二区| 国产高清精品一区| 亚洲调教一区| 一区二区三视频| 欧美日韩亚洲一区二区三区在线| 国产资源在线免费观看| 中文高清一区| 91av俱乐部| 国内精品写真在线观看| 人妻巨大乳一二三区| 99在线视频精品| 青娱乐国产视频| 亚洲激情第一区| 天堂中文字幕在线观看| 欧美日韩日本视频| а√中文在线资源库| 日韩精品视频中文在线观看| 国产爆初菊在线观看免费视频网站 | 亚洲日本久久| 亚洲少妇久久久| 国产一区二区三区综合| 荫蒂被男人添免费视频| 久久久久久久久久久黄色| 97精品在线播放| 亚洲第一久久影院| 中文字幕777| 欧美mv和日韩mv国产网站| 久久经典视频| 欧美精品一区在线播放| 自拍网站在线观看| 亚洲一区中文字幕| 蜜桃一区二区| 日韩专区第三页| 七七婷婷婷婷精品国产| 日本人妻一区二区三区| 欧美高清在线视频| 久久精品视频日本| 欧美三级资源在线| 日韩一级免费毛片| 精品国产一区二区三区久久狼5月| 91av久久| 97神马电影| 欧美一级淫片| 国产一区二区在线视频播放| 久久99精品久久只有精品| www.超碰97| 亚洲老妇xxxxxx| 亚洲中文字幕一区二区| 国产婷婷97碰碰久久人人蜜臀| 4438x成人网全国最大| 国产精品久久久久久久久免费| 一区二区免费| 一区二区三区观看| 日韩成人免费在线| 青青草视频成人| 亚洲h在线观看| 国产高清精品软件丝瓜软件| 中文字幕欧美精品在线| 小草在线视频免费播放| 国产欧美日韩伦理| 欧美精品不卡| 久久成年人网站| 国产精品色婷婷| 天堂网视频在线| 日韩激情在线视频| 3344国产永久在线观看视频| 999视频在线观看| 国产精品毛片久久| 亚洲欧美激情网| 久久久不卡影院| 五月天激情四射| 国产视频久久久久久久| 多野结衣av一区| 成人毛片网站| 韩国久久久久| 国产情侣久久久久aⅴ免费| 亚洲精品精品亚洲| aaa一区二区三区| 久久成人人人人精品欧| 3d动漫一区二区三区在线观看| 天天人人精品| 精品一区二区三区在线观看国产 | 欧美日韩视频免费播放| 污污网站在线免费观看| 国自在线精品视频| 成人三级av在线| www.浪潮av.com| 久久影院视频免费| 男人的天堂av网站| 亚洲视屏在线播放| 亚洲成av在线| 亚洲v欧美v另类v综合v日韩v| 青椒成人免费视频| 亚洲色图欧美色| 在线电影院国产精品| av在线免费网站| 97人人澡人人爽| 国产日韩欧美一区| 日本一级免费视频| 欧美绝品在线观看成人午夜影视| 黄av在线免费观看| 99国精产品一二二线| 18成人免费观看视频| 中文幕无线码中文字蜜桃| 欧美性xxxxx极品少妇| 欧美成人性生活视频| 亚洲永久免费观看| 最新国产拍偷乱拍精品 | 猛男gaygay欧美视频| 爱情岛论坛亚洲首页入口章节| 国产精品初高中害羞小美女文| av片免费播放| 538国产精品一区二区免费视频| 亚洲伊人春色| 日本网站在线看| 精品福利樱桃av导航| 国产高清在线看| 97欧洲一区二区精品免费| 亚洲麻豆视频| 亚洲精品国产精品国自| 欧美成人一区二区| 中文在线资源| 潘金莲一级淫片aaaaaa播放1| 波多野结衣一区二区三区| 超碰在线观看91| 欧美精品一区在线播放| 久久99国产成人小视频| www.com久久久| 黑人巨大精品欧美一区二区免费| 欧美午夜电影一区二区三区| 国产亚洲福利社区| 久久成人综合网| 欧美一级视频免费观看| 日韩专区中文字幕| 一本色道久久综合狠狠躁的番外| 亚洲一二区在线观看| 色综合欧美在线| 一二三四区在线观看| 色播亚洲视频在线观看| 国产成人精品综合在线观看| 中文字幕永久在线|