暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

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

SeaTunnel 2023-08-24
363


点击蓝字 · 关注我们



作者 | 高俊
整理编辑 | Debra Chen

发版


时隔两个月, Apache SeaTunnel 终于迎来大版本更新。此次发布的 2.3.3 版本在功能和性能上均有较大优化改进,其中大家期待已久的 CDC Schema evolution(DDL 变更同步)、主键 Split 拆分、JDBC Sink 自动建表功能、SeaTunnel Zeta 引擎支持 作业配置支持变量替换和传参等都是更新的亮点。这些功能和优化使得 Apache SeaTunnel 具备了更强大的数据同步能力,大幅提升了 SeaTunnel 的性能。本文将详细介绍本次更新的具体情况。



CDC 相关更新


1

支持 Schema evolution











关于 CDC 方面的重要更新,是在架构层面支持了 Schema evolution(DDL 变更同步),这是从架构层面对 DDL 变更事件进行了抽象,包括 Source 和 Sink 中相关接口的添加。另外,我们在 Zeta 引擎中添加了 DDL 变更事件与checkpoint 相关的处理流程。至此,在架构层面,SeaTunnel 已经满足了支持 DDL 变更同步的所有前提条件,后续就是不同的连接器实现相应的接口,进行 DDL 变更同步的适配工作。

SeaTunnel CDC 相关设计,可参考《解读重要功能特性:新手入门 Apache SeaTunnel CDC》

2

Split 拆分优化











在本次更新之前,CDC Source 读取时只能基于数值类型的主键列进行 Split 的拆分,而在实际使用场景中,很多表没有主键,或者主键的数据类型是字符串类型,这会导致无法进行 CDC 同步。本次更新添加了两个重大 feature:

  • 一个是支持唯一索引作为 split 拆分字段;
  • 另一个是支持字符串类型的字段进行split拆分。

这意味着只要 source 表中拥有主键列或者唯一索引列,并且列的类型是数值或者字符串,就能自动进行 split 的拆分,从而快速完成 CDC 的读取。另外,新版本对于基于字符串类型列进行 split 拆分的算法进行了优化,经过测试,一张拥有 4 亿行,60 个字段的 MySQL 数据表,针对字符串类型主键的 split 拆分由原来的 3 个小时缩短到 20 分钟。在 JDBC Source 的 partition 拆分中,我们添加了同样的算法,从而让 JDBC Source 针对字符串类型的 split 拆分也得到了优化。

3

新增加 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

        3. 作业配置支持变量替换和传参,本次更新之后,用户可以在作业的 config 文件中使用变量,然后在真正提交作业时通过命令行传参的方式来动态替换这些变量,借助这个功能,用户可以实现离线增量同步功能。



        其他功能更新、优化和 Bug 修复


        除此之外,新版本还在 SeaTunnel Connector、Zeta 引擎、Transform、CI 等方面进行了重要更新和优化,修复了以往版本的顽固 Bug,并更新了将近 30 个项目文档,其中包括数十个新增 Connector 的使用文档说明,为用户在实际应用场景中进行不同 Connector 的接入提供详细的指导。

        • 详情参考 Release Note:https://github.com/apache/seatunnel/releases
        • 2.3.3 版本下载地址:https://seatunnel.apache.org/download



        致谢贡献者


        感谢@刘黎对此次发版的指导与帮助,以及下列贡献者对本次发版的支持!


        贡献者 GitHub ID



        Apache SeaTunnel





        Apache SeaTunnel 是一个分布式、高性能、易扩展、用于海量数据(离线&实时)同步和转化的数据集成平台

        仓库地址: 
        https://github.com/apache/seatunnel

        网址:
        https://seatunnel.apache.org/

        Apache SeaTunnel 下载地址:
        https://seatunnel.apache.org/download
         
        衷心欢迎更多人加入!

        我们相信,在「Community Over Code」(社区大于代码)、「Open and Cooperation」(开放协作)、「Meritocracy」(精英管理)、以及「多样性与共识决策」等 The Apache Way 的指引下,我们将迎来更加多元化和包容的社区生态,共建开源精神带来的技术进步!

        我们诚邀各位有志于让本土开源立足全球的伙伴加入 SeaTunnel 贡献者大家庭,一起共建开源!

        提交问题和建议:
        https://github.com/apache/seatunnel/issues

        贡献代码:
        https://github.com/apache/seatunnel/pulls

        订阅社区开发邮件列表 : 
        dev-subscribe@seatunnel.apache.org

        开发邮件列表:
        dev@seatunnel.apache.org

        加入 Slack:
        https://join.slack.com/t/apacheseatunnel/shared_invite/zt-1kcxzyrxz-lKcF3BAyzHEmpcc4OSaCjQ

        关注 Twitter: 
        https://twitter.com/ASFSeaTunnel

        精彩推荐




        Apache SeaTunnel Connector 使用文档和使用案例有奖征稿来了!一起玩开源




        JDBC Vertica Source Connector 使用文档




        讲师征集令 | Apache SeaTunnel Meetup 分享嘉宾火热招募中!



        一键三连-点赞在看转发⭐️!

        文章转载自SeaTunnel,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

        评论