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

【大數(shù)據(jù)】Flink 詳解(十):SQL 篇 Ⅲ(Flink SQL CDC)

這篇具有很好參考價(jià)值的文章主要介紹了【大數(shù)據(jù)】Flink 詳解(十):SQL 篇 Ⅲ(Flink SQL CDC)。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

Flink 詳解》系列(已完結(jié)),共包含以下 10 10 10 篇文章:

  • 【大數(shù)據(jù)】Flink 詳解(一):基礎(chǔ)篇(架構(gòu)、并行度、算子)
  • 【大數(shù)據(jù)】Flink 詳解(二):核心篇 Ⅰ(窗口、WaterMark)
  • 【大數(shù)據(jù)】Flink 詳解(三):核心篇 Ⅱ(狀態(tài) State)
  • 【大數(shù)據(jù)】Flink 詳解(四):核心篇 Ⅲ(Checkpoint、Savepoint、Exactly-Once)
  • 【大數(shù)據(jù)】Flink 詳解(五):核心篇 Ⅳ(反壓、序列化、內(nèi)存模型)
  • 【大數(shù)據(jù)】Flink 詳解(六):源碼篇 Ⅰ(作業(yè)提交、Local 方式、YARN 方式、K8s 方式)
  • 【大數(shù)據(jù)】Flink 詳解(七):源碼篇 Ⅱ(作業(yè)圖、執(zhí)行圖、調(diào)度、作業(yè)生命周期、Task Slot)
  • 【大數(shù)據(jù)】Flink 詳解(八):SQL 篇 Ⅰ(Flink SQL)
  • 【大數(shù)據(jù)】Flink 詳解(九):SQL 篇 Ⅱ(Flink SQL CEP)
  • 【大數(shù)據(jù)】Flink 詳解(十):SQL 篇 Ⅲ(Flink SQL CDC)

?? 如果您覺得這篇文章有用 ?? 的話,請給博主一個(gè)一鍵三連 ?????? 吧 (點(diǎn)贊 ??、關(guān)注 ??、收藏 ??)?。?!您的支持 ?????? 將激勵(lì) ?? 博主輸出更多優(yōu)質(zhì)內(nèi)容?。?!

102.Flink CDC 了解嗎?什么是 Flink SQL CDC Connectors?

在 Flink 1.11 引入了 CDC 機(jī)制,CDC 的全稱是 Change Data Capture,用于捕捉數(shù)據(jù)庫表的增刪改查操作,是目前非常成熟的同步數(shù)據(jù)庫變更方案。

Flink CDC Connectors 是 Apache Flink 的一組源連接器,是可以從 MySQL、PostgreSQL 數(shù)據(jù)直接讀取全量數(shù)據(jù)和增量數(shù)據(jù)的 Source Connectors,開源地址:https://github.com/ververica/flink-cdc-connectors。

目前(1.13 版本)支持的 Connectors 如下:

【大數(shù)據(jù)】Flink 詳解(十):SQL 篇 Ⅲ(Flink SQL CDC),# Flink,大數(shù)據(jù),flink,sql,流批一體,Flink CDC,CDC,實(shí)時(shí)同步
另外支持解析 Kafka 中 debezium-jsoncanal-json 格式的 Change Log,通過 Flink 進(jìn)行計(jì)算或者直接寫入到其他外部數(shù)據(jù)存儲(chǔ)系統(tǒng)(比如 Elasticsearch),或者將 Changelog Json 格式的 Flink 數(shù)據(jù)寫入到 Kafka。

【大數(shù)據(jù)】Flink 詳解(十):SQL 篇 Ⅲ(Flink SQL CDC),# Flink,大數(shù)據(jù),flink,sql,流批一體,Flink CDC,CDC,實(shí)時(shí)同步
Flink CDC Connectors 和 Flink 之間的版本映射:

【大數(shù)據(jù)】Flink 詳解(十):SQL 篇 Ⅲ(Flink SQL CDC),# Flink,大數(shù)據(jù),flink,sql,流批一體,Flink CDC,CDC,實(shí)時(shí)同步

103.Flink CDC 原理介紹一下

在最新 CDC 調(diào)研報(bào)告中,DebeziumCanal 是目前最流行使用的 CDC 工具,這些 CDC 工具的核心原理是 抽取數(shù)據(jù)庫日志 獲取變更。在經(jīng)過一系列調(diào)研后,目前 Debezium(支持全量、增量同步,同時(shí)支持 MySQL、PostgreSQL、Oracle 等數(shù)據(jù)庫),使用較為廣泛。

Flink SQL CDC 內(nèi)置了 Debezium 引擎,利用其抽取日志獲取變更的能力,將 changelog 轉(zhuǎn)換為 Flink SQL 認(rèn)識的 RowData 數(shù)據(jù)。(以下右側(cè)是 Debezium 的數(shù)據(jù)格式,左側(cè)是 Flink 的 RowData 數(shù)據(jù)格式)。

【大數(shù)據(jù)】Flink 詳解(十):SQL 篇 Ⅲ(Flink SQL CDC),# Flink,大數(shù)據(jù),flink,sql,流批一體,Flink CDC,CDC,實(shí)時(shí)同步
RowData 代表了一行的數(shù)據(jù),在 RowData 上面會(huì)有一個(gè)元數(shù)據(jù)的信息 RowKind,RowKind 里面包括了 插入+I)、更新前-U)、更新后+U)、刪除-D),這樣和數(shù)據(jù)庫里面的 binlog 概念十分類似。

通過 Debezium 采集的數(shù)據(jù),包含了舊數(shù)據(jù)(before)和新數(shù)據(jù)行(after)以及元數(shù)據(jù)信息(source),opu 表示是 update 更新操作標(biāo)識符(op 字段的值 cu,dr 分別對應(yīng) create,update,deleteread),ts_ms 表示同步的時(shí)間戳。

104.通過 CDC 設(shè)計(jì)一種 Flink SQL 的 ETL 一體化的實(shí)時(shí)數(shù)倉

設(shè)計(jì)圖如下:

【大數(shù)據(jù)】Flink 詳解(十):SQL 篇 Ⅲ(Flink SQL CDC),# Flink,大數(shù)據(jù),flink,sql,流批一體,Flink CDC,CDC,實(shí)時(shí)同步

通過 Flink CDC Connectors 替換 Debezium + Kafka 的數(shù)據(jù)采集模塊,實(shí)現(xiàn) Flink SQL 的 ETL 一體化,以 MySQL 為 Source 源,F(xiàn)link CDC 中間件為插件,ES、Kafka 或者其他為 Sink,這樣設(shè)計(jì)的優(yōu)點(diǎn)如下:

  • 開箱即用,簡單易上手。
  • 減少維護(hù)的組件,簡化實(shí)時(shí)鏈路,減輕部署成本。
  • 減小端到端延遲。
  • Flink 自身支持 Exactly Once 的讀取和計(jì)算。
  • 數(shù)據(jù)不落地,減少存儲(chǔ)成本。
  • 支持全量和增量流式讀取。
  • binlog 采集位點(diǎn)可回溯。

105.Flink SQL CDC 如何實(shí)現(xiàn)一致性保障(源碼分析)

Flink SQL CDC 用于獲取數(shù)據(jù)庫變更日志的 Source 函數(shù)是 DebeziumSourceFunction,且最終返回的類型是 RowData,該函數(shù)實(shí)現(xiàn)了 CheckpointedFunction,即通過 Checkpoint 機(jī)制來保證發(fā)生 failure 時(shí)不會(huì)丟數(shù),實(shí)現(xiàn) exactly once 語義,這部分在函數(shù)的注釋中有明確的解釋。

/**
 * The {@link DebeziumSourceFunction} is a streaming data source that pulls captured change data
 * from databases into Flink.
 * 通過Checkpoint機(jī)制來保證發(fā)生failure時(shí)不會(huì)丟數(shù),實(shí)現(xiàn)exactly once語義
 * <p>The source function participates in checkpointing and guarantees that no data is lost
 * during a failure, and that the computation processes elements "exactly once".
 * 注意:這個(gè)Source Function不能同時(shí)運(yùn)行多個(gè)實(shí)例
 * <p>Note: currently, the source function can't run in multiple parallel instances.
 *
 * <p>Please refer to Debezium's documentation for the available configuration properties:
 * https://debezium.io/documentation/reference/1.2/development/engine.html#engine-properties</p>
 */
@PublicEvolving
public class DebeziumSourceFunction<T> extends RichSourceFunction<T> implements
CheckpointedFunction,
ResultTypeQueryable<T> {}

為實(shí)現(xiàn) CheckpointedFunction,需要實(shí)現(xiàn)以下兩個(gè)方法:

public interface CheckpointedFunction {
	// 做快照,把內(nèi)存中的數(shù)據(jù)保存在checkpoint狀態(tài)中
	void snapshotState(FunctionSnapshotContext var1) throws Exception;
	
	// 程序異?;謴?fù)后從checkpoint狀態(tài)中恢復(fù)數(shù)據(jù)
	void initializeState(FunctionInitializationContext var1) throws Exception;
}

接下來我們看看 DebeziumSourceFunction 中都記錄了哪些狀態(tài)。

/** Accessor for state in the operator state backend. 
    offsetState中記錄了讀取的binlog文件和位移信息等,對應(yīng)Debezium中的
*/
private transient ListState<byte[]> offsetState;

/**
 * State to store the history records, i.e. schema changes.
 * historyRecordsState記錄了schema的變化等信息
 * @see FlinkDatabaseHistory
*/
private transient ListState<String> historyRecordsState;

我們發(fā)現(xiàn)在 Flink SQL CDC 是一個(gè)相對簡易的場景,沒有中間算子,是通過 Checkpoint 持久化 binglog 消費(fèi)位移和 schema 變化信息的快照,來實(shí)現(xiàn) Exactly Once。

106.Flink SQL GateWay 了解嗎?

Flink SQL Gateway 是 Flink 集群的 任務(wù)網(wǎng)關(guān),支持以 RestAPI 的形式提交查詢、插入、刪除等任務(wù),如下圖所示:

【大數(shù)據(jù)】Flink 詳解(十):SQL 篇 Ⅲ(Flink SQL CDC),# Flink,大數(shù)據(jù),flink,sql,流批一體,Flink CDC,CDC,實(shí)時(shí)同步
總體架構(gòu)如下圖所示:

【大數(shù)據(jù)】Flink 詳解(十):SQL 篇 Ⅲ(Flink SQL CDC),# Flink,大數(shù)據(jù),flink,sql,流批一體,Flink CDC,CDC,實(shí)時(shí)同步

107.Flink SQL GateWay 創(chuàng)建會(huì)話講解一下?

創(chuàng)建會(huì)話流程圖如下:

【大數(shù)據(jù)】Flink 詳解(十):SQL 篇 Ⅲ(Flink SQL CDC),# Flink,大數(shù)據(jù),flink,sql,流批一體,Flink CDC,CDC,實(shí)時(shí)同步

  • 傳入?yún)?shù)包含 name 名稱、planner 執(zhí)行引擎(Blink 或原生的 Flink)、executetypestreaming 或者 batch)、properties(配置參數(shù),如并發(fā)度等)。
  • 在 SessionMnager 中,會(huì)根據(jù)這些參數(shù)創(chuàng)建對應(yīng)的 SessionContext。
SessionContext sessionContext = new SessionContext(sessionName, sessionId, sessionEnv, defaultContext);
  • 將創(chuàng)建 Session 放入 Map 集合中,最后返回對應(yīng)的 SessionId,方便后續(xù)使用。
sessions.put(sessionId,session); return sessionId;

108.Flink SQL GateWay 如何處理并發(fā)請求?多個(gè)提交怎么處理?

SQL GateWay 內(nèi)部維護(hù) SessionManager,里面通過 Map 維護(hù)了各個(gè) Session,每個(gè) Session 的任務(wù)執(zhí)行是獨(dú)立的。同一個(gè) Session 通過 ExecuteContext 內(nèi)部的 tEnvTableEnvironment)按順序提交。

109.如何維護(hù)多個(gè) SQL 之間的關(guān)聯(lián)性?

在每個(gè) Session 中單獨(dú)維護(hù)了 tEnv,同一個(gè) Session 中的操作其實(shí)是在一個(gè) env 中執(zhí)行的。因此只要是同一個(gè) Session 中的任務(wù),內(nèi)部使用的 tEnv 就是同一個(gè)。這樣就可以實(shí)現(xiàn)在一個(gè) Session 中,先創(chuàng)建一個(gè) view,然后執(zhí)行一個(gè) select,最后執(zhí)行一個(gè) insert。

110.SQL 字符串如何提交到集群成為代碼?

Session 中維護(hù)了 tEnv,SQL 會(huì)通過 tEnv 編譯生成 Pipeline(即 DAG 圖),在 batch 模式下是 Plan 執(zhí)行計(jì)劃;在 stream 模式下是 StreamGraph。然后 Session 內(nèi)部會(huì)創(chuàng)建一個(gè) ProgramDeployer 代碼發(fā)布器,根據(jù) Flink 中配置的 target 創(chuàng)建不同的 excutor。最后調(diào)用 executor.execute 方法提交 Pipeline 和 Config 執(zhí)行。文章來源地址http://www.zghlxwxcb.cn/news/detail-823376.html

到了這里,關(guān)于【大數(shù)據(jù)】Flink 詳解(十):SQL 篇 Ⅲ(Flink SQL CDC)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(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)文章

  • 【大數(shù)據(jù)】Flink 詳解(十):SQL 篇 Ⅲ(Flink SQL CDC)

    【大數(shù)據(jù)】Flink 詳解(十):SQL 篇 Ⅲ(Flink SQL CDC)

    《 Flink 詳解 》系列(已完結(jié)),共包含以下 10 10 10 篇文章: 【大數(shù)據(jù)】Flink 詳解(一):基礎(chǔ)篇(架構(gòu)、并行度、算子) 【大數(shù)據(jù)】Flink 詳解(二):核心篇 Ⅰ(窗口、WaterMark) 【大數(shù)據(jù)】Flink 詳解(三):核心篇 Ⅱ(狀態(tài) State) 【大數(shù)據(jù)】Flink 詳解(四):核心篇

    2024年01月25日
    瀏覽(54)
  • Flink CDC和Flink SQL構(gòu)建實(shí)時(shí)數(shù)倉Flink寫入Doris

    Flink CDC和Flink SQL構(gòu)建實(shí)時(shí)數(shù)倉Flink寫入Doris

    軟件環(huán)境 Flink1.13.3 Scala 2.12 doris 0.14 一、MySQL 開啟binlog日志、創(chuàng)建用戶 1.開啟bin log MySQL 8.0默認(rèn)開啟了binlog,可以通過代碼show variables like \\\"%log_bin%\\\";查詢是否開啟了,show variables like \\\"%server_id%\\\";查詢服務(wù)器ID。 上圖分別顯示了bin long是否開啟以及bin log所在的位置。 2.創(chuàng)建用戶 C

    2024年02月02日
    瀏覽(17)
  • 基于Flink CDC實(shí)時(shí)同步PostgreSQL與Tidb【Flink SQL Client模式下親測可行,詳細(xì)教程】

    操作系統(tǒng):ubuntu-22.04,運(yùn)行于wsl 2【 注意,請務(wù)必使用wsl 2 ;wsl 1會(huì)出現(xiàn)各種各樣的問題】 軟件版本:PostgreSQL 14.9,TiDB v7.3.0,flink 1.7.1,flink cdc 2.4.0 已有postgre的跳過此步 (1)pg安裝 https://zhuanlan.zhihu.com/p/143156636 (2)pg配置 可能出現(xiàn)的問題 sudo -u postgres psql 報(bào)錯(cuò): psql: err

    2024年02月11日
    瀏覽(29)
  • flink重溫筆記(六):Flink 流批一體 API 開發(fā)—— 數(shù)據(jù)輸出 sink

    前言:今天是學(xué)習(xí) flink 的第七天啦!學(xué)習(xí)了 flink 中 sink(數(shù)據(jù)槽) 部分知識點(diǎn),這一部分只要是解決數(shù)據(jù)處理之后,數(shù)據(jù)到哪里去的問題,我覺得 flink 知識點(diǎn)雖然比較難理解,但是代碼跑通后,邏輯還是比較有趣的! Tips:毛爺爺說過:“宜將剩勇追窮寇,不可沽名學(xué)霸王

    2024年02月21日
    瀏覽(18)
  • 基于 Flink SQL CDC 數(shù)據(jù)處理的終極武器

    基于 Flink SQL CDC 數(shù)據(jù)處理的終極武器

    來源互聯(lián)網(wǎng)多篇文章總結(jié) 業(yè)務(wù)系統(tǒng)經(jīng)常會(huì)遇到需要更新數(shù)據(jù)到多個(gè)存儲(chǔ)的需求。例如:一個(gè)訂單系統(tǒng)剛剛開始只需要寫入數(shù)據(jù)庫即可完成業(yè)務(wù)使用。某天 BI 團(tuán)隊(duì)期望對數(shù)據(jù)庫做全文索引,于是我們同時(shí)要寫多一份數(shù)據(jù)到 ES 中,改造后一段時(shí)間,又有需求需要寫入到 Redis 緩存

    2024年02月16日
    瀏覽(17)
  • flink重溫筆記(二):Flink 流批一體 API 開發(fā)——Source 數(shù)據(jù)源操作

    前言:今天是第二天啦!開始學(xué)習(xí) Flink 流批一體化開發(fā)知識點(diǎn),重點(diǎn)學(xué)習(xí)了各類數(shù)據(jù)源的導(dǎo)入操作,我發(fā)現(xiàn)學(xué)習(xí)編程需要分類記憶,一次一次地猜想 api 作用,然后通過敲代碼印證自己的想法,以此理解知識點(diǎn),加深對api的理解和應(yīng)用。 Tips:我覺得學(xué)習(xí) Flink 還是挺有意思的

    2024年02月19日
    瀏覽(23)
  • Flink + Iceberg打造流批一體的數(shù)據(jù)湖架構(gòu)

    Flink + Iceberg打造流批一體的數(shù)據(jù)湖架構(gòu)

    一、背景 1、數(shù)據(jù)倉庫架構(gòu) ????????從Hive表 出倉 到外部系統(tǒng)(ClickHouse、Presto、ES等)帶來的復(fù)雜性和存儲(chǔ)開發(fā)等額外代價(jià),盡量減少這種場景出倉的必要性。 痛點(diǎn):傳統(tǒng) T+1 任務(wù) 海量的TB級 T+ 1 任務(wù)延遲導(dǎo)致下游數(shù)據(jù)產(chǎn)出時(shí)間不穩(wěn)定。 任務(wù)遇到故障重試恢復(fù)代價(jià)昂貴 數(shù)

    2024年02月04日
    瀏覽(23)
  • 基于Flink SQL CDC Mysql to Mysql數(shù)據(jù)同步

    基于Flink SQL CDC Mysql to Mysql數(shù)據(jù)同步

    Flink CDC有兩種方式同步數(shù)據(jù)庫: 一種是通過FlinkSQL直接輸入兩表數(shù)據(jù)庫映射進(jìn)行數(shù)據(jù)同步,缺點(diǎn)是只能單表進(jìn)行同步; 一種是通過DataStream開發(fā)一個(gè)maven項(xiàng)目,打成jar包上傳到服務(wù)器運(yùn)行。 本方案使用FlinkSQL方法,同步兩表中的數(shù)據(jù)。 其中Flink應(yīng)用可以部署在具有公網(wǎng)IP的服務(wù)

    2023年04月11日
    瀏覽(27)
  • Flink流批一體計(jì)算(1):流批一體和Flink概述

    Apache Flink應(yīng)運(yùn)而生 數(shù)字化經(jīng)濟(jì)革命的浪潮正在顛覆性地改變著人類的工作方式和生活方式,數(shù)字化經(jīng)濟(jì)在全球經(jīng)濟(jì)增長中扮演著越來越重要的角色,以互聯(lián)網(wǎng)、云計(jì)算、大數(shù)據(jù)、物聯(lián)網(wǎng)、人工智能為代表的數(shù)字技術(shù)近幾年發(fā)展迅猛,數(shù)字技術(shù)與傳統(tǒng)產(chǎn)業(yè)的深度融合釋放出巨大

    2024年02月10日
    瀏覽(23)
  • flink cdc數(shù)據(jù)同步,DataStream方式和SQL方式的簡單使用

    flink cdc數(shù)據(jù)同步,DataStream方式和SQL方式的簡單使用

    目錄 一、flink cdc介紹 1、什么是flink cdc 2、flink cdc能用來做什么 3、flink cdc的優(yōu)點(diǎn) 二、flink cdc基礎(chǔ)使用 1、使用flink cdc讀取txt文本數(shù)據(jù) 2、DataStream的使用方式 3、SQL的方式 總結(jié) flink cdc是一個(gè)由阿里研發(fā)的,一個(gè)可以直接從MySQL、PostgreSQL等數(shù)據(jù)庫直接讀取全量數(shù)據(jù)和增量變更數(shù)

    2024年02月13日
    瀏覽(25)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包