最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

如何實現(xiàn)直接在數(shù)據(jù)源上使用Watermark?

2023-08-24 11:49 作者:ingemar-  | 我要投稿

當使用 Apache Kafka 連接器作為數(shù)據(jù)源時,每個 Kafka 分區(qū)可能有一個簡單的事件時間模式(遞增的時間戳或有界無序)。然而,當使用 Kafka 數(shù)據(jù)源時,多個分區(qū)常常并行使用,因此交錯來自各個分區(qū)的事件數(shù)據(jù)就會破壞每個分區(qū)的事件時間模式(這是 Kafka 消費客戶端所固有的)。

在這種情況下,你可以使用 Flink 中可識別 Kafka 分區(qū)的 watermark 生成機制。使用此特性,將在 Kafka 消費端內(nèi)部針對每個 Kafka 分區(qū)生成 watermark,并且不同分區(qū) watermark 的合并方式與在數(shù)據(jù)流?shuffle?時的合并方式相同。

例如,如果每個 Kafka 分區(qū)中的事件時間戳嚴格遞增,則使用時間戳單調(diào)遞增按分區(qū)生成的 watermark 將生成完美的全局 watermark。

注意,我們在示例中未使用 TimestampAssigner,而是使用了 Kafka 記錄自身的時間戳。

下圖展示了如何使用單 kafka 分區(qū) watermark 生成機制,以及在這種情況下 watermark 如何通過 dataflow 傳播。

在實際的計算中,往往會出現(xiàn)一個作業(yè)中會處理多個source的數(shù)據(jù), 對source的數(shù)據(jù)進行g(shù)roupBy分組,那么來自不同source的相同的key會shuffle到同一個處理節(jié)點. 并且攜帶各自的Watermark。

Flink內(nèi)部要保證Watermark的單調(diào)遞增,多個source的Watermark匯聚到一起是不可能單調(diào)遞增的。

Flink內(nèi)部實現(xiàn)每一個邊上只能有一個遞增的Watermark, 當出現(xiàn)多個流攜帶EventTime匯聚到一起(groupBy或者Union)。Flink會選擇所有輸入流中EventTime中最小的一個向下游流出。從而保證Watermark的單調(diào)遞增和數(shù)據(jù)的完整性。


需求

讀取kafkaconsumer并設(shè)置水印機制


操作步驟


1. 獲取流執(zhí)行環(huán)境,設(shè)置并行度1

2. 創(chuàng)建FlinkKafkaConsumer和相應(yīng)的配置

3. 設(shè)置consumer的水印機制為20

4. 通過consumer添加數(shù)據(jù)源

5. 根據(jù)滾動處理時間窗口5s做wordcount,先flatMap,keyBy,window,sum

6. 打印輸出

7. 執(zhí)行流環(huán)境



參考代碼



如何實現(xiàn)直接在數(shù)據(jù)源上使用Watermark?的評論 (共 條)

分享到微博請遵守國家法律
万安县| 大石桥市| 延吉市| 博爱县| 崇仁县| 北辰区| 北安市| 黑龙江省| 绥宁县| 花莲市| 无极县| 咸丰县| 贵南县| 翁牛特旗| 额济纳旗| 烟台市| 大埔县| 巴青县| 玉溪市| 苗栗市| 珲春市| 临高县| 日土县| 同德县| 抚顺市| 襄城县| 团风县| 竹溪县| 夏邑县| 延津县| 安塞县| 富源县| 琼海市| 桂平市| 高唐县| 光山县| 南陵县| 新营市| 织金县| 洮南市| 巩留县|