首页 > 其他分享 >Apache SeaTunnel 2.3.3 版本发布,CDC 支持 Schema Evolution!

Apache SeaTunnel 2.3.3 版本发布,CDC 支持 Schema Evolution!

时间:2023-08-28 19:00:10浏览次数:42  
标签:SeaTunnel 同步 CDC Evolution 更新 Source 拆分

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

本文由 白鲸开源 提供发布支持!

标签:SeaTunnel,同步,CDC,Evolution,更新,Source,拆分
From: https://www.cnblogs.com/seatunnel/p/17663181.html

相关文章

  • Apache SeaTunnel社区迎来新Committer!
    采访&编辑|DebraChen个人简介姓名:马骋原公司:恒生电子GitHubID:rewerma个人擅长研究领域:java中间件、微服务、大数据等您为社区提交了什么贡献?具体方案可以描述一下吗?为SeatTunnel提交SQLTransformplugin的PR,通过SQL解析器生成物理执行计划,自建函数库执行数据转换......
  • 恭喜又一白鲸开源成员成为 Apache SeaTunnel PMC Member
    个人简介王海林白鲸开源研发工程师GitHubID:hailin0做过性能监控、数据开发平台等,目前聚焦在数据集成同步及其周边生态的研发问:作为白鲸开源的一员,您为社区做出过哪些贡献?具体方案(代码类)和贡献事迹有哪些?最开始参与到社区,主要是贡献一些连接器插件以及修复bug,随着对项目加......
  • 恭喜又一白鲸开源成员成为 Apache SeaTunnel PMC Member
    个人简介王海林白鲸开源研发工程师GitHubID:hailin0做过性能监控、数据开发平台等,目前聚焦在数据集成同步及其周边生态的研发问:作为白鲸开源的一员,您为社区做出过哪些贡献?具体方案(代码类)和贡献事迹有哪些?最开始参与到社区,主要是贡献一些连接器插件以及修复bug,随着对项目......
  • flink-cdc同步mysql数据到elasticsearch
    1,什么是cdcCDC是(ChangeDataCapture变更数据获取)的简称。核心思想是,监测并捕获数据库的变动(包括数据或数据表的插入INSERT、更新UPDATE、删除DELETE等),将这些变更按发生的顺序完整记录下来,写入到消息中间件中以供其他服务进行订阅及消费。2,flink的cdc项目地址:https://github......
  • CDC 数据复制:技术、权衡、见解
    推荐:使用NSDT场景编辑器助你快速搭建可编辑的3D应用场景在本文中,我将定义CDC数据复制,简要讨论最常见的用例,然后讨论常见技术及其权衡。最后,我将提供一些我作为数据集成公司Dataddo的首席执行官和创始人所学到的一般实现见解。什么是变更数据捕获(CDC)数据复制?CDC数据复制是......
  • Apache DolphinScheduler 3.1.8 版本发布,修复 SeaTunnel 相关 Bug
    近日,ApacheDolphinScheduler发布了3.1.8版本。此版本主要基于3.1.7版本进行了bug修复,共计修复16个bug,1个doc,2个chore。其中修复了以下几个较为重要的问题:修复在构建SeaTunnel任务节点的参数时错误的判断条件修复SeaTunnel任务运行模式默认为运行,无......
  • 使用轻量级 CDC debezium-server-databend 构建实时数据同步
    作者:韩山杰DatabendCloud研发工程师https://github.com/hantmacDebeziumServerDatabend是一个基于DebeziumEngine自研的轻量级CDC项目,用于实时捕获数据库更改并将其作为事件流传递最终将数据写入目标数据库Databend。它提供了一种简单的方式来监视和捕获关系型数......
  • LM25118自动升降压DCDC开关电源模块
    LM25118自动升降压非同步DCDC电源模块,输入电压4.5-35V,输出电压1.23-31V可调,最大输出电流8A,效率最高92%,开关频率400kHz。LM25118是一个3-42V宽输入电压、电流模式非同步降压/升压控制器。学校电赛培训作业要做一个输入5V,输出1.8-24V,最大电流2A的电源模块,所以就搞了个LM25118的电源......
  • 一文弄懂Flink CDC
    1.CDC概述CDC(ChangeDataCapture)是一种用于捕获和处理数据源中的变化的技术。它允许实时地监视数据库或数据流中发生的数据变动,并将这些变动抽取出来,以便进行进一步的处理和分析。传统上,数据源的变化通常通过周期性地轮询整个数据集进行检查来实现。但是,这种轮询的方式效率低下且......
  • 使用 Apache SeaTunnel 实现 Kafka Source 解析复杂Json 案例
    版本说明:SeaTunnel:apache-seatunnel-2.3.2-SNAPHOT引擎说明:Flink:1.16.2Zeta:官方自带前言近些时间,我们正好接手一个数据集成项目,数据上游方是给我们投递到Kafka,我们一开始的技术选型是SpringBoot+Flink对上游数据进行加工处理(下文简称:方案一),由于测试不到位,后来到线上,发现......