Apache SeaTunnel 2.3.3 版本發佈,CDC 支持 Schema Evolution!

来源:https://www.cnblogs.com/seatunnel/archive/2023/08/28/17663181.html
-Advertisement-
Play Games

![file](https://img2023.cnblogs.com/other/3195851/202308/3195851-20230828185450336-2138333694.png) > 時隔兩個月, Apache SeaTunnel 終於迎來大版本更新。此次發佈的 2.3.3 版本在 ...


file

時隔兩個月, Apache SeaTunnel 終於迎來大版本更新。此次發佈的 2.3.3 版本在功能和性能上均有較大優化改進,其中大家期待已久的 CDC Schema evolution(DDL 變更同步)、主鍵 Split 拆分、JDBC Sink 自動建表功能、SeaTunnel Zeta 引擎支持 作業配置支持變數替換和傳參等都是更新的亮點。這些功能和優化使得 Apache SeaTunnel 具備了更強大的數據同步能力,大幅提升了 SeaTunnel 的性能。本文將詳細介紹本次更新的具體情況。

CDC 相關更新

支持 Schema evolution

關於 CDC 方面的重要更新,是在架構層面支持了 Schema evolution(DDL 變更同步),這是從架構層面對 DDL 變更事件進行了抽象,包括 Source 和 Sink 中相關介面的添加。另外,我們在 Zeta 引擎中添加了 DDL 變更事件與checkpoint 相關的處理流程。至此,在架構層面,SeaTunnel 已經滿足了支持 DDL 變更同步的所有前提條件,後續就是不同的連接器實現相應的介面,進行 DDL 變更同步的適配工作。

SeaTunnel CDC 相關設計,可參考《解讀重要功能特性:新手入門 Apache SeaTunnel CDC》。

Split 拆分優化

在本次更新之前,CDC Source 讀取時只能基於數值類型的主鍵列進行 Split 的拆分,而在實際使用場景中,很多表沒有主鍵,或者主鍵的數據類型是字元串類型,這會導致無法進行 CDC 同步。本次更新添加了兩個重大 feature:

  • 一個是支持唯一索引作為 split 拆分欄位;
  • 另一個是支持字元串類型的欄位進行split拆分。

這意味著只要 source 表中擁有主鍵列或者唯一索引列,並且列的類型是數值或者字元串,就能自動進行 split 的拆分,從而快速完成 CDC 的讀取。另外,新版本對於基於字元串類型列進行 split 拆分的演算法進行了優化,經過測試,一張擁有 4 億行,60 個欄位的 MySQL 數據表,針對字元串類型主鍵的 split 拆分由原來的 3 個小時縮短到 20 分鐘。在 JDBC Source 的 partition 拆分中,我們添加了同樣的演算法,從而讓 JDBC Source 針對字元串類型的 split 拆分也得到了優化。

新增加 MongoDB CDC 連接器

同時,SeaTunnel 2.3.3 版本新增了 MongoDB CDC 連接器,也能支持 CDC 同步。

Transform 更新

SQL Transform 支持 select * 和 like 模糊匹配。

select * 可以查詢出從source傳入的所有欄位,在select * 之後可以添加其它欄位用於實現在同步的過程中添加自定義列的效果,比如下麵的示例:

transform {
  Sql {
    source_table_name = "fake"
    result_table_name = "fake1"
    query = "select *, current_timestamp as sync_timestamp from fake"
  }
}

經過這個Transform的處理,會在source輸入的第一行數據中添加一個sync_timestamp列,該列的值是該行數據經過該Transform時的系統時間戳。

like 模糊匹配用於在Transform對數據數據進行過濾,比如下麵的示例:

transform {
  Sql {
    source_table_name = "fake"
    result_table_name = "fake1"
    query = "select *, current_timestamp as sync_timestamp from fake where name like '%Demo_'"
  }
}

經過這個Transform處理之後,除了實現了上一個示例添加列的效果之外,還可以對數據進行過濾,只有name欄位的值以Demo_開頭的行才會輸出到下游處理節點(其它Transform節點或Sink節點)。

基礎能力更新

在做 CDC 多表同步的場景下,之前目標表無法自動創建,需要用戶手工在目標端創建好表之後才能進行同步。在本次更新中,添加了 JDBC Sink 自動建表的功能,JDBC Sink 將根據上游傳遞過來的 catalogtable 自動生成創建表的DDL 語句,併在目標資料庫進行建表。

  • 註意,很多資料庫都可以使用 JDBC Sink 連接器,但並不是所有資料庫都已經實現了自動建表,本次更新目標端支持自動建表的資料庫有 MySQL, Oracle, Postgres, SQLServer。另外,使用自動建表對 Source Connector 也有要求,Source 連接器必須實現了 Catalog,本次更新中只有 CDC Source 實現了 Catalog,所以自動建表功能只有在 CDC Source 同步到 MySQL/Oracle/Postgres/SQLServer,並且是在多表同步模式下才能生效。

Zeta 引擎更新

  1. 支持 Schema evolution(DDL變更同步)。

  2. Rest API 添加了提交作業的 API,用戶可以使用 Rest API 進行作業的提交。這對於那些自研開發了頁面集成 SeaTunnel 的用戶來說非常重要,這意味著他們不再需要單獨為提交作業安裝 SeaTunnel Client。

示例如下:

network:
    rest-api:
      enabled: true
      endpoint-groups:
        CLUSTER_WRITE:
          enabled: true
        DATA:
          enabled: true
    join:
      tcp-ip:
        enabled: true
        member-list:
          - localhost
    port:
      auto-increment: true
      port-count: 100
      port: 5801

具體可參考:https://seatunnel.apache.org/docs/seatunnel-engine/rest-api/#submit-job

  1. 作業配置支持變數替換和傳參,本次更新之後,用戶可以在作業的 config 文件中使用變數,然後在真正提交作業時通過命令行傳參的方式來動態替換這些變數,藉助這個功能,用戶可以實現離線增量同步功能。

其他功能更新、優化和 Bug 修複

除此之外,新版本還在 SeaTunnel Connector、Zeta 引擎、Transform、CI 等方面進行了重要更新和優化,修複了以往版本的 Bug,並更新了將近 30 個項目文檔,其中包括數十個新增 Connector 的使用文檔說明,為用戶在實際應用場景中進行不同 Connector 的接入提供詳細的指導。

致謝貢獻者

感謝@劉黎對此次發版的指導與幫助,以及下列貢獻者對本次發版的支持!

貢獻者 GitHub ID

file

本文由 白鯨開源 提供發佈支持!


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 目錄 Linux運維工程師面試題(3)1 LVS 的工作模式有幾種,分別是什麼2 LVS 由哪幾部分組成3 LVS 相關的術語有哪些4 LVS 集群的負載調度演算法有哪些5 使用LVS 可不可以把iptables給禁用刪除6 haproxy 調度演算法有哪些7 nginx 實現負載均衡的分發策略有那些8... ...
  • > 利用for迴圈語句, # 方案一 ##### > 定義1到10的變數,for語句引用該變數 ### 單行代碼 `list="1 2 3 4 5 6 7 8 9 10"; for i in $list; do echo $i; done` ### 多行代碼 for……do……done ``` li ...
  • # 鍵盤敲入 A 字母時,操作系統期間發生了什麼? 關於[8.1 鍵盤敲入 A 字母時,操作系統期間發生了什麼?](https://xiaolincoding.com/os/7_device/device.html)的總結,前面都介紹了,但是在最後總結操作系統發生了什麼的時候,我覺得有點不詳細,於是 ...
  • # Git和Gitlab使用 ## 前言 **版本控制概念**:記錄開發文件的時間機器 **分類**:1.本地版本控制系統、2.集中化的版本控制系統CVS、Subversion(SVN)、3.分散式版本控制系統GIT **產品**:github、git、gitlab ## Gitlab部署 **1. ...
  • 很多運維同學都遇到過“磁碟告警”,遇到這種情況就需要去清理磁碟。 這時候,很多同學通過各種途徑、手段、命令找到了占用磁碟比較大的文件,然後大手一揮, sudo rm -rvf xxxxx.log 以為這樣任務就完成了,誰知道,一查詢磁碟使用量還是居高不下,完全沒有釋放。 這是因為在Linux中,如果 ...
  • 進程是正在運行的程式的實例,它可以包含一個或多個線程。我們瞭解了進程的執行方式,包括早期單核處理器上的順序執行以及引入多任務概念實現的偽並行。我們還探討了進程的狀態模型。進程可以處於就緒、運行、阻塞和結束等不同的狀態。就緒狀態表示進程已經準備好運行,但還沒有被調度執行。運行狀態表示進程正在執行。阻塞... ...
  • ![](https://img2023.cnblogs.com/blog/3076680/202308/3076680-20230825164340432-1938857156.png) # 1. 連接 ## 1.1. 笛卡兒積 ### 1.1.1. 交叉連接(cross join) ### 1.1 ...
  • ![file](https://img2023.cnblogs.com/other/2685289/202308/2685289-20230828190238753-1379880889.png) 視頻貢獻者 | 王維饒 視頻製作者 | 聶同學 編輯整理 | Debra Chen > Apache ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...