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

news2024/11/26 12:30:35

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 的接入提供详细的指导。

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

致谢贡献者

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

贡献者 GitHub ID

file

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/940765.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C语言每日一题 ---- 打印从1到最大的n位数(Day 1)

本专栏为c语言练习专栏,适合刚刚学完c语言的初学者。本专栏每天会不定时更新,通过每天练习,进一步对c语言的重难点知识进行更深入的学习。 💓博主csdn个人主页:小小unicorn ⏩专栏分类:C语言天天练 &#x…

基于Java+SpringBoot+Vue前后端分离疾病防控综合系统设计和实现

博主介绍:✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专…

Linux系统编程系列之进程间通信(IPC)-信号

一、什么是信号 信号是进程间通信的一种方式,它是异步通信的。而异步的意思就是不同步,事件的发生和处理没有协同。 二、信号的特性 Linux/Unix系统下,信号总共分成两大类,一类是最常用的标准信号,另一类是后面的引入…

Python怎么解决性能问题?

Python的性能问题可以通过以下一些方法来解决或改善: 使用更高效的算法和数据结构: 选择适当的数据结构和算法可以显著提升代码的性能。了解不同算法的时间复杂度和空间复杂度,选择最适合问题的解决方案。 优化代码逻辑: 仔细审查…

yolov8使用C++推理的流程及注意事项

1.下载yolov8项目源码GitHub - ultralytics/ultralytics: NEW - YOLOv8 🚀 in PyTorch > ONNX > OpenVINO > CoreML > TFLite 2.下载opencvReleases - OpenCV,建议版本>4.7.0,选择下载源码, windows版本由于使用的编译器与我们所使用的m…

5年测试,面试结束后被HR发朋友圈怼了..(心塞)

前一阵子向朋友诉苦,我在参加字节跳动面试的时候被面试官怼得哑口无言,场面让我一度十分尴尬。 印象最深的就是下面几个问题: 根据你以前的工作经验和学习到的测试技术,说说你对质量保证的理解? 非关系型数据库和关系型…

关于MySQL数据页的一些认识

1. 一个数据页有很多个槽,每个槽对应一个分组,槽指向分组的最大数据行记录,查找时通过二分法定位数据所在组 从数据页的角度看 B 树 | 小林coding 【Mysql】InnoDB 引擎中的页目录 - 知乎 2. 每个行记录是通过单链表来存储的 3. 数据页之…

教会你怎么使用SpringMVC 文件上传

😀前言 教会你怎么使用SpringMVC 文件上传 🏠个人主页:尘觉主页 🧑个人简介:大家好,我是尘觉,希望我的文章可以帮助到大家,您的满意是我的动力😉😉 在csdn获…

java入坑之网络编程

一、 网络基础知识 1.1网卡 1.2IP地址 1.3端口 1.4保留IP 1.5网络协议 二、UDP 编程 2.1相关概念 计算机通讯:数据从一个IP的port出发(发送方),运输到另外一个IP的port(接收方) UDP:无连接无…

EXSI技术--Exsi简介与安装

1.EXSI简介 了解可直接安装到您的物理服务器的、可靠的裸机 Hypervisor。通过直接访问并控制底层资源,VMware ESXi可有效地对硬件进行分区,以便整合应用并降低成本。它是业界领先的高效体系架构,在可靠性、性能和支持方面树立了行业标杆。(裸金属架构) VMware vSphere的虚拟…

CSDN每日一练 |『影分身』『小鱼的航程(改进版)』『排查网络故障』2023-08-25

CSDN每日一练 |『影分身』『小鱼的航程(改进版)』『排查网络故障』2023-08-25 一、题目名称:影分身二、题目名称:小鱼的航程(改进版)三、题目名称:排查网络故障 一、题目名称:影分身 时间限制:1…

【java并发编程的艺术读书笔记】ConcurrentHashMap是如何保证线程安全的

ConcurrentHashMap HashMap的线程安全问题 并发环境下HashMap可能会导致程序死循环,原因是put操作可能会使得HashMap中的链表结构成环,导致无法找到next节点,无限循环 HashTable为什么效率低 HashMap是使用synchronized来保证县城安全的&…

计算机网络MTU和MSS的区别

在计算机网络中,MTU代表最大传输单元(Maximum Transmission Unit),而MSS代表最大分节大小(Maximum Segment Size)。 1.MTU(最大传输单元): MTU是指在网络通信中&#x…

C语言初阶测评题:测试你的基础知识和编程技能!!

💓博客主页:江池俊的博客⏩收录专栏:C语言刷题专栏👉专栏推荐:✅C语言初阶之路 ✅C语言进阶之路💻代码仓库:江池俊的代码仓库🎉欢迎大家点赞👍评论📝收藏⭐ 文…

【C语言】探讨蕴藏在表达式求解中的因素

🚩纸上得来终觉浅, 绝知此事要躬行。 🌟主页:June-Frost 🚀专栏:C语言 🔥该篇将探讨 操作符 和 类型转换 对表达式求解的影响。 目录: 隐式类型转换算术转换操作符的属性❤️ 结语 隐…

调用自实现MyGetProcAddress获得CreateFileA函数并调用创建写入文件

写文件如下 #include <iostream> #include <Windows.h>typedef HANDLE(WINAPI* CreateFileAFunc)(LPCSTR, DWORD, DWORD, LPSECURITY_ATTRIBUTES, DWORD, DWORD, HANDLE);DWORD MyGetProcAddress(_In_ HMODULE hModule,_In_ LPCSTR lpProcName ){PIMAGE_DOS_HEADE…

南京邮电大学《基于编译原理的表达式计算器》

文章目录 一、课题内容和要求二、课题需求分析1 过程分析2 设计分析 三、课题相关数据结构及算法设计1 主要数据结构2 主要算法流程3 词法分析4 语法分析5 中间代码生成6 LR语法分析程序6.1识别活前缀的DFA6.2 SLR(1)分析表6.3 分析过程 四、源程序代码1 源代码层次结构2.1 ana…

第十套教程序言:阻止对Sub和Functions的直接访问

【分享成果&#xff0c;随喜正能量】引擎利用后退的力量&#xff0c;引发更大的动能&#xff1b;空气经过压缩&#xff0c;更具爆破的威力。所谓"退一步想&#xff0c;海阔天空。"正可点破我们迷妄执着的盲点。。 《VBA高级应用30例》&#xff08;10178985&#xff0…

前端Excel导入数据后端数据库表未添加主键导致Excel导入数据重复

Java对Excel等文档解析上传到数据库或服务器问题记录 临时功能展示数据库表未添加主键导致Excel导入数据重复 如图,问题发现是因为Excel表中只有两千多条数据但导入数据库后却有五千多条,当时在代码中疯狂找原因也未果,最后尝试给数据库添加主键解决问题! 去除重复数据 总条…

渗透测试漏洞原理之---【CSRF跨站请求伪造】

文章目录 1、CSRF概述1.1、基本原理1.1.1、基本概念1.1.2、关键点1.1.3、目标 1.2、CSRF场景1.2.1、银行支付转账1.2.2构造虚假网站1.2.3、场景建模 1.3、CSRF类别1.3.1、POST方式 1.4、CSRF验证1.4.1、CSRF PoC Generator 2、CSRF攻防2.1、CSRF实战2.1.1、与XSS 漏洞相结合 2.…