国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

深入理解 Flink(四)Flink Time+WaterMark+Window 深入分析

這篇具有很好參考價(jià)值的文章主要介紹了深入理解 Flink(四)Flink Time+WaterMark+Window 深入分析。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

深入理解 Flink 系列文章已完結(jié),總共八篇文章,直達(dá)鏈接:
深入理解 Flink (一)Flink 架構(gòu)設(shè)計(jì)原理
深入理解 Flink (二)Flink StateBackend 和 Checkpoint 容錯(cuò)深入分析
深入理解 Flink (三)Flink 內(nèi)核基礎(chǔ)設(shè)施源碼級原理詳解
深入理解 Flink (四)Flink Time+WaterMark+Window 深入分析
深入理解 Flink (五)Flink Standalone 集群啟動源碼剖析
深入理解 Flink (六)Flink Job 提交和 Flink Graph 詳解
深入理解 Flink (七)Flink Slot 管理詳解
深入理解 Flink (八)Flink Task 部署初始化和啟動詳解

Flink Window 常見需求背景

需求描述

每隔 5 秒,計(jì)算最近 10 秒單詞出現(xiàn)的次數(shù) —— 滑動窗口
每隔 5 秒,計(jì)算最近 5 秒單詞出現(xiàn)的次數(shù) —— 滾動窗口
深入理解 Flink(四)Flink Time+WaterMark+Window 深入分析,大數(shù)據(jù),flink,大數(shù)據(jù),分布式

關(guān)于 Flink time 種類 TimeCharacteristic

深入理解 Flink(四)Flink Time+WaterMark+Window 深入分析,大數(shù)據(jù),flink,大數(shù)據(jù),分布式

  • ProcessingTime
  • IngestionTime
  • EventTime

WindowAssigner 的子類

  • SlidingProcessingTimeWindows
  • SlidingEventTimeWindows
  • TumblingEventTimeWindows
  • TumblingProcessingTimeWindows

使用 EventTime + WaterMark 處理亂序數(shù)據(jù)

示意圖:
深入理解 Flink(四)Flink Time+WaterMark+Window 深入分析,大數(shù)據(jù),flink,大數(shù)據(jù),分布式

  • 使用 onPeriodicEmit 方法發(fā)送 watermark,默認(rèn)每 200ms 發(fā)一次。
  • 窗口起始時(shí)間默認(rèn)按各個(gè)時(shí)區(qū)的整點(diǎn)時(shí)間,支持自定義 offset。

Flink Watermark 機(jī)制定義

有序的流的 Watermarks

深入理解 Flink(四)Flink Time+WaterMark+Window 深入分析,大數(shù)據(jù),flink,大數(shù)據(jù),分布式

無序的流的 Watermarks

深入理解 Flink(四)Flink Time+WaterMark+Window 深入分析,大數(shù)據(jù),flink,大數(shù)據(jù),分布式

多并行度流的 Watermarks

深入理解 Flink(四)Flink Time+WaterMark+Window 深入分析,大數(shù)據(jù),flink,大數(shù)據(jù),分布式

深入理解 Flink Watermark

Flink Window 觸發(fā)的條件:

  1. watermark 時(shí)間 >= window_end_time
  2. 在 [window_start_time, window_end_time) 區(qū)間中有數(shù)據(jù)存在(注意是左閉右開的區(qū)間),而且是以 event time 來計(jì)算的

Flink 處理太過延遲數(shù)據(jù)

Flink 丟棄延遲太多的數(shù)據(jù)

企業(yè)生產(chǎn)中一般不用。

Flink 指定允許再次遲到的時(shí)間

治標(biāo)不治本,企業(yè)生產(chǎn)中一般不用。

Flink 收集遲到的數(shù)據(jù)單獨(dú)處理

企業(yè)生產(chǎn)中應(yīng)用較為廣泛。

Flink 多并行度 Watermark

一個(gè) window 可能會接受到多個(gè) waterMark,我們以最小的為準(zhǔn)。
深入理解 Flink(四)Flink Time+WaterMark+Window 深入分析,大數(shù)據(jù),flink,大數(shù)據(jù),分布式

Flink Window 概述

官網(wǎng)介紹

https://nightlies.apache.org/flink/flink-docs-release-1.14/docs/dev/datastream/operators/windows/
深入理解 Flink(四)Flink Time+WaterMark+Window 深入分析,大數(shù)據(jù),flink,大數(shù)據(jù),分布式

Flink Window 分類

Flink 的 window 分為兩種類型的 Window,分別是:Keyed Windows 和 Non-Keyed Windows,他們的使用方式不同:

// Keyed Windows 
stream
    .keyBy(...) <- keyed versus non-keyed windows
    .window(...) <- required: "assigner"
    [.trigger(...)] <- optional: "trigger" (else default trigger)
    [.evictor(...)] <- optional: "evictor" (else no evictor)
    [.allowedLateness(...)] <- optional: "lateness" (else zero)
    [.sideOutputLateData(...)] <- optional: "output tag" (else no side output for late data)
    .reduce/aggregate/apply() <- required: "function"
    [.getSideOutput(...)] <- optional: "output tag"
// Non-Keyed Windows
stream
    .windowAll(...) <- required: "assigner"
    [.trigger(...)] <- optional: "trigger" (else default trigger)
    [.evictor(...)] <- optional: "evictor" (else no evictor)
    [.allowedLateness(...)] <- optional: "lateness" (else zero)
    [.sideOutputLateData(...)] <- optional: "output tag" (else no side output for late data)
    .reduce/aggregate/apply() <- required: "function"
    [.getSideOutput(...)] <- optional: "output tag"

Window 的生命周期

  1. 當(dāng)屬于某個(gè)窗口的第一個(gè)元素到達(dá)的時(shí)候,就會創(chuàng)建一個(gè)窗口。
  2. 當(dāng)時(shí)間(event or processing time)超過 window 的結(jié)束時(shí)間戳加上用戶指定的允許延遲(Allowed Lateness)時(shí),窗口將被完全刪除。
  3. 每個(gè) Window 之上,都綁定有一個(gè) Trigger 或者一個(gè) Function(ProcessWindowFunction, ReduceFunction, or AggregateFunction)用來執(zhí)行窗口內(nèi)數(shù)據(jù)的計(jì)算。
  4. 可以給 Window 指定一個(gè) Evictor,它能夠在 after the trigger fires 以及 before and/or after the function is applied 從窗口中刪除元素。

Flink Window 類型

Flink 流批同一前后的 Window 分類:
深入理解 Flink(四)Flink Time+WaterMark+Window 深入分析,大數(shù)據(jù),flink,大數(shù)據(jù),分布式

tumblingwindows —— 滾動窗口

深入理解 Flink(四)Flink Time+WaterMark+Window 深入分析,大數(shù)據(jù),flink,大數(shù)據(jù),分布式

slidingwindows —— 滑動窗口

深入理解 Flink(四)Flink Time+WaterMark+Window 深入分析,大數(shù)據(jù),flink,大數(shù)據(jù),分布式

session windows —— 會話窗口

深入理解 Flink(四)Flink Time+WaterMark+Window 深入分析,大數(shù)據(jù),flink,大數(shù)據(jù),分布式

global windows —— 全局窗口

深入理解 Flink(四)Flink Time+WaterMark+Window 深入分析,大數(shù)據(jù),flink,大數(shù)據(jù),分布式

Flink Window 操作使用

高級玩法:自定義 Trigger、自定義 Evictor,讀者可自行搜索相關(guān)文章與代碼。

Flink Window 增量聚合

  • reduce(ReduceFunction)
  • aggregate(AggregateFunction)
  • sum()
  • min()
  • max()
  • sum()

Flink Window 全量聚合

  • apply(WindowFunction)
  • process(ProcessWindowFunction)

Flink Window Join

// 在 Flink 中對兩個(gè) DataStream 做 Join
// 1、指定兩張表
// 2、指定這兩張表的鏈接字段
stream.join(otherStream) // 兩個(gè)流進(jìn)行關(guān)聯(lián)
    .where(<KeySelector>) // 選擇第一個(gè)流的key作為關(guān)聯(lián)字段
    .equalTo(<KeySelector>) // 選擇第二個(gè)流的key作為關(guān)聯(lián)字段
    .window(<WindowAssigner>) // 設(shè)置窗口的類型
    .apply(<JoinFunction>) // 對結(jié)果做操作 process apply = foreach

Tumbling Window Join

深入理解 Flink(四)Flink Time+WaterMark+Window 深入分析,大數(shù)據(jù),flink,大數(shù)據(jù),分布式

Sliding Window Join

深入理解 Flink(四)Flink Time+WaterMark+Window 深入分析,大數(shù)據(jù),flink,大數(shù)據(jù),分布式

Session Window Join

深入理解 Flink(四)Flink Time+WaterMark+Window 深入分析,大數(shù)據(jù),flink,大數(shù)據(jù),分布式

Interval Join

深入理解 Flink(四)Flink Time+WaterMark+Window 深入分析,大數(shù)據(jù),flink,大數(shù)據(jù),分布式
核心代碼示例:文章來源地址http://www.zghlxwxcb.cn/news/detail-819747.html

DataStream<Integer> orangeStream = ...;
DataStream<Integer> greenStream = ...;
orangeStream
    .keyBy(<KeySelector>)
    .intervalJoin(greenStream.keyBy(<KeySelector>))
    .between(Time.milliseconds(-2), Time.milliseconds(1))
    .process (new ProcessJoinFunction<Integer, Integer, String(){
        @Override
        public void processElement(Integer left, Integer right, Context ctx, Collector<String> out) {
            out.collect(first + "," + second);
       }
    });

到了這里,關(guān)于深入理解 Flink(四)Flink Time+WaterMark+Window 深入分析的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 深入理解 Flink(一)Flink 架構(gòu)設(shè)計(jì)原理

    深入理解 Flink(一)Flink 架構(gòu)設(shè)計(jì)原理

    深入理解 Flink 系列文章已完結(jié),總共八篇文章,直達(dá)鏈接: 深入理解 Flink (一)Flink 架構(gòu)設(shè)計(jì)原理 深入理解 Flink (二)Flink StateBackend 和 Checkpoint 容錯(cuò)深入分析 深入理解 Flink (三)Flink 內(nèi)核基礎(chǔ)設(shè)施源碼級原理詳解 深入理解 Flink (四)Flink Time+WaterMark+Window 深入分析 深入

    2024年02月02日
    瀏覽(19)
  • 【flink番外篇】6、flink的WaterMark(介紹、基本使用、kafka的水印以及超出最大允許延遲數(shù)據(jù)的處理)介紹及示例(1) - 介紹

    一、Flink 專欄 Flink 專欄系統(tǒng)介紹某一知識點(diǎn),并輔以具體的示例進(jìn)行說明。 1、Flink 部署系列 本部分介紹Flink的部署、配置相關(guān)基礎(chǔ)內(nèi)容。 2、Flink基礎(chǔ)系列 本部分介紹Flink 的基礎(chǔ)部分,比如術(shù)語、架構(gòu)、編程模型、編程指南、基本的datastream api用法、四大基石等內(nèi)容。 3、

    2024年02月01日
    瀏覽(30)
  • 【flink番外篇】6、flink的WaterMark(介紹、基本使用、kafka的水印以及超出最大允許延遲數(shù)據(jù)的處理)介紹及示例 - 完整版

    一、Flink 專欄 Flink 專欄系統(tǒng)介紹某一知識點(diǎn),并輔以具體的示例進(jìn)行說明。 1、Flink 部署系列 本部分介紹Flink的部署、配置相關(guān)基礎(chǔ)內(nèi)容。 2、Flink基礎(chǔ)系列 本部分介紹Flink 的基礎(chǔ)部分,比如術(shù)語、架構(gòu)、編程模型、編程指南、基本的datastream api用法、四大基石等內(nèi)容。 3、

    2024年02月02日
    瀏覽(27)
  • 【天衍系列 04】深入理解Flink的ElasticsearchSink組件:實(shí)時(shí)數(shù)據(jù)流如何無縫地流向Elasticsearch

    【天衍系列 04】深入理解Flink的ElasticsearchSink組件:實(shí)時(shí)數(shù)據(jù)流如何無縫地流向Elasticsearch

    Flink的Elasticsearch Sink是用于將Flink數(shù)據(jù)流(DataStream)中的數(shù)據(jù)發(fā)送到Elasticsearch的組件。它是Flink的一個(gè)連接器(Connector),用于實(shí)現(xiàn)將實(shí)時(shí)處理的結(jié)果或數(shù)據(jù)持續(xù)地寫入Elasticsearch集群中的索引中。 下面是一些關(guān)于Flink的Elasticsearch Sink的基礎(chǔ)概念: 數(shù)據(jù)源(Source) :Flink數(shù)據(jù)流

    2024年02月20日
    瀏覽(23)
  • 深入理解 Flink(七)Flink Slot 管理詳解

    深入理解 Flink(七)Flink Slot 管理詳解

    JobMaster 中封裝了一個(gè) DefaultScheduler,在 DefaultScheduler.startSchedulingInternal() 方法中生成 ExecutionGraph 以執(zhí)行調(diào)度。 資源調(diào)度的大體流程如下: Register:當(dāng) TaskExecutor 啟動之后,會向 ResourceManager 注冊自己(TaskExecutor)和自己內(nèi)部的 Slot(TaskManagerSlot)。 Status Report:TaskExecutor 啟動之

    2024年01月21日
    瀏覽(32)
  • Flink window 源碼分析4:WindowState

    本文源碼為flink 1.18.0版本。 其他相關(guān)文章: Flink window 源碼分析1:窗口整體執(zhí)行流程 Flink window 源碼分析2:Window 的主要組件 Flink window 源碼分析3:WindowOperator Flink window 源碼分析4:WindowState 主要考慮 reduce、aggregate 函數(shù)中的托管狀態(tài)是在什么時(shí)候觸發(fā)和使用的?使用時(shí)與Win

    2024年01月25日
    瀏覽(27)
  • 深入理解 Flink(六)Flink Job 提交和 Flink Graph 詳解

    深入理解 Flink(六)Flink Job 提交和 Flink Graph 詳解

    深入理解 Flink 系列文章已完結(jié),總共八篇文章,直達(dá)鏈接: 深入理解 Flink (一)Flink 架構(gòu)設(shè)計(jì)原理 深入理解 Flink (二)Flink StateBackend 和 Checkpoint 容錯(cuò)深入分析 深入理解 Flink (三)Flink 內(nèi)核基礎(chǔ)設(shè)施源碼級原理詳解 深入理解 Flink (四)Flink Time+WaterMark+Window 深入分析 深入

    2024年01月16日
    瀏覽(28)
  • 深入理解 Flink(五)Flink Standalone 集群啟動源碼剖析

    深入理解 Flink(五)Flink Standalone 集群啟動源碼剖析

    深入理解 Flink 系列文章已完結(jié),總共八篇文章,直達(dá)鏈接: 深入理解 Flink (一)Flink 架構(gòu)設(shè)計(jì)原理 深入理解 Flink (二)Flink StateBackend 和 Checkpoint 容錯(cuò)深入分析 深入理解 Flink (三)Flink 內(nèi)核基礎(chǔ)設(shè)施源碼級原理詳解 深入理解 Flink (四)Flink Time+WaterMark+Window 深入分析 深入

    2024年02月02日
    瀏覽(32)
  • Flink window 源碼分析1:窗口整體執(zhí)行流程

    Flink window 源碼分析1:窗口整體執(zhí)行流程

    注:本文源碼為flink 1.18.0版本。 其他相關(guān)文章: Flink window 源碼分析1:窗口整體執(zhí)行流程 Flink window 源碼分析2:Window 的主要組件 Flink window 源碼分析3:WindowOperator Flink window 源碼分析4:WindowState Window 本質(zhì)上就是借助狀態(tài)后端緩存著一定時(shí)間段內(nèi)的數(shù)據(jù),然后在達(dá)到某些條件

    2024年01月16日
    瀏覽(27)
  • 【入門Flink】- 09Flink水位線Watermark

    【入門Flink】- 09Flink水位線Watermark

    在 窗口的處理過程 中,基于數(shù)據(jù)的時(shí)間戳,自定義一個(gè) “邏輯時(shí)鐘” 。這個(gè)時(shí)鐘的時(shí)間不會自動流逝;它的時(shí)間進(jìn)展,就是靠著新到數(shù)據(jù)的時(shí)間戳來推動的。 用來衡量 事件時(shí)間 進(jìn)展的標(biāo)記,就被稱作 “水位線”(Watermark) 。 具體實(shí)現(xiàn)上,水位線可以看作一條 特殊的數(shù)

    2024年01月17日
    瀏覽(23)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包