bl双性强迫侵犯h_国产在线观看人成激情视频_蜜芽188_被诱拐的少孩全彩啪啪漫画

watermark該怎么理解

這期內容當中小編將會給大家帶來有關watermark該怎么理解,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

站在用戶的角度思考問題,與客戶深入溝通,找到棗強網站設計與棗強網站推廣的解決方案,憑借多年的經驗,讓設計與互聯網技術結合,創造個性化、用戶體驗好的作品,建站類型包括:網站建設、做網站、企業官網、英文網站、手機端網站、網站推廣、主機域名虛擬主機、企業郵箱。業務覆蓋棗強地區。

經常有球友或者微信群友反饋自己搞不明白watermark怎么回事兒,所以今天小編準備發文詳細說明一下。

首先,拿基于窗口的計算來說吧,窗口的大小 size和滑動間隔 slide,都是基于時間維度處理的,像Spark Streaming就是基于處理時間,也即是處理任務所在機器的本地時間,用這個時間處理數據我們自然無法關注事件是否在時間維度上亂序,是否是滯后數據,那么為了保證數據有序和處理滯后數據就不能用處理時間進行處理。

幸運的事情是往往我們采集數據的時候往往會給數據打上一個采集時間,那么我們在后面流處理的時候假如窗口大小 size和滑動間隔 slide 是基于這個時間的話,那么我們就可以感知到事件是否在時間維度上有序,是否滯后。在這種情況下就引入了watermark,其作用一是驅動流計算向前執行,二是可以作為依據處理延遲數據,也即是可以允許數據有多大的延遲。

1. 時間概念

從時間概念上來講,對于流程序總共有三種時間概念:

  1. 處理時間

  2. 注入時間

  3. 事件時間

watermark該怎么理解

其中,注入時間可以視為事件時間的特殊形式,但是要注意的事情是注入時間就不能處理無序事件和滯后事件,自然不能用watermark機制了。

2. 事件時間和watermark

支持事件時間的流處理器需要一種方法來測量事件時間的進展。例如,一個小時窗口windows的操作,當事件時間已經超過一個小時的時候需要通知該操作算子,以便操作算子可以關閉正在進行中的窗口。

例如在一個程序中,操作算子的當前事件時間可能稍微落后于處理時間(事件傳輸延遲導致的)。另外流程序可能只需要幾秒鐘的處理時間就可以處理事件跨度為幾周的數據,比如通過快速處理一些已經緩存在kafka topic(或者另外的消息隊列)中的歷史數據。

Flink中使用watermark去測量事件時間的進度。Watermark 作為數據流的一部分,攜帶一個時間戳 t。一個Watermark(t) 聲明事件時間已經到達時間t,意味著已經沒有事件時間t1<t的元素在流中存在(也即時間的時間戳應該早于或者等于watermark)。如下圖:

watermark該怎么理解

Watermark對于無序流是至關重要的,如下圖所示,事件不是根據時間戳排序。一般來說,watermark類似于deadline吧,到了這個點你還沒到,那就pass掉了。也即是一旦watermark到達操作算子,操作算子就可以將內部時間設置為watermark的值,再來數據就會棄掉了。

watermark該怎么理解

3. 在并行流中的watermark

對于flink來說,一般Watermark是在Source函數生成,當然也可以再后期的算子中生成,但是一定要在時間函數(主要是窗口函數)之前生成。一個source函數的每個并行子任務通常獨立的產生watermark。這些watermark定義了特定并行source的事件時間。

當watermark流經流程序時,會調整操作算子中的事件時間至watermark到達的時間。每當操作算子更新它自己的事件時間時,它就會為后繼的操作算子生成一個新的下行watermark。

一些操作算子會有多個輸入流。例如,union操作或者keyBy(...)或partition(...)之后的操作.這些操作算子的當前事件時間是取決于所有輸入流最小的事件時間。當輸入流更新它們的事件時間時,操作算子也會更新。

下圖顯示了,流經并行流的事件和watermark,以及跟蹤事件時間的運算符。

watermark該怎么理解

4. 遲滯元素

也可能存在違反watermark條件的事件,也即在Watermark(t) 已經發生以后,會有時間戳t1<t的事件出現。事實上,在現實設置中,某些事件可能會有任意的延遲,使得所有元素在watermark之前準時到達變得不是很可能。即使延遲是有界的,大尺度的延遲watermark也是不可取的,因為會導致事件時間窗口計算延遲很大,窗口會等到watermark時間戳到達才會刷寫到sink的

比如,窗口一個小時,watermark設置的是一天,那結果就會在一天零一個小時候刷出去,這個明顯不是我們要的,尤其是對實時性要求比較高的。

5. 空閑source

目前,對于純事件時間watermark生成器,如果沒有要處理的事件,則watermark是不會生成并且下發的。 這意味著在輸入數據存在間隙的情況下,事件時間將不會繼續前進,例如窗口操作算子將不會被觸發,因此現有窗口將不能產生任何輸出數據。

為了避免這種情況,可以使用周期watermark分配器,它們不僅基于事件時間戳進行分配,還會在沒有事件的時候產生空的watermark。 比如可以在長時間沒有觀測到事件流入的話,可以采用系統當前時間來生成watermark。

當然,可以使用SourceFunction.SourceContext #markAsTemporarilyIdle將源標記為空閑。 

6. watermark處理機制

前面說了,watarmark的作用和產生,那么watermark是如何被算子處理的呢?

通用的規則是操作算子需要在向下游轉發watermark之前完全處理給定的watermark。 例如,WindowOperator將首先評估應該觸發哪些窗口,并且只有在產生由watermark觸發的所有輸出之后,watermark本身才會被發送到下游。 換句話說,由于出現水印而產生的所有元素將在水印之前發出。

同樣的規則適用于TwoInputStreamOperator。 但是,在這種情況下,操作算子的當前watermark被定義為其兩個輸入的最小值。

要注意watermark指定延遲的話進行不要太大,太大會導致結果刷新滯后太久。

數據上報有周期性間隔的話,要注意以心跳的形式發watermark,保證流程序繼續前進。

上述就是小編為大家分享的watermark該怎么理解了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注創新互聯行業資訊頻道。

標題名稱:watermark該怎么理解
分享網址:http://vcdvsql.cn/article20/gghcjo.html

成都網站建設公司_創新互聯,為您提供自適應網站面包屑導航網站營銷網站設計公司小程序開發虛擬主機

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

h5響應式網站建設