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


8 月 26 日「源创会」北京站,聊聊 AI 大模型与底层技术 >>>

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


相關推薦

2023-01-06

️ Star · 照亮开源之路 https://github.com/apache/incubator-seatunnel 版本发布 今天,Apache SeaTunnel(incubating) 正式推出 2.3.0 正式版本,并正式发布自己的核心同步引擎 Zeta!此外,SeaTunnel 2.3.0 还带来了许多大家期待已久的新特性,

2023-03-30

SeaTunnel 2.3.1 版本于近日发布,这是一次备受瞩目的重磅发布,有多项重要功能更新和优化。 在编程使用体验层面上,新版本提升了 SeaTunnel Zeta 稳定性,并提升了 CI/CD 的稳定性;在连接器层面上,新版本实现了 7+ 个新连接器

2024-08-08

Apache SeaTunnel 2.3.6 版本于近日正式发布,社区期待的 SeaTunnel Zeta Master/Worker 新架构、事件通知机制、支持动态编译的transform等新功能和新能力在这次版本中都有了全面的更新,并添加了首个向量数据库 Milvus。此外,本版本还进

2024-10-16

Apache SeaTunnel 2.3.8 版本现已正式发布!此次版本后,用户将可以使用期待已久的Docker镜像,还可以体验Job级别日志功能,以及其他更新优化的功能。本文将详细介绍 Apache SeaTunnel 2.3.8 版本中的关键更新内容,欢迎更多开发者和

2024-10-22

DolphinScheduler平台中,厌倦了烦冗枯燥且容易出错的DataX、SeaTunnel的JSON配置脚本编写。您可以尝试一下TIS新提供的与DolphinScheduler整合插件,一定会有惊喜。 优化增量实时同步任务启动速度 当用户选择整库数据表同步任务执行

2024-07-02

详情。 WhaleTunnel WhaleTunnel是基于白鲸开源主导的Apache SeaTunnel之上精心打磨的商业级的数据集成工具,拥有数据传输速度快、准确率高、稳定性强等技术特点,帮助企业完成内部EtLT中数据集成EtL部分,支持百余种连接器类型,

2023-05-18

了基于 3.1.5 版本进行了 bug 修复、Doc 完善外, 还进行了 SeaTunnel Zeta 引擎的支持。   其中较为重要的为: 修复依赖任务不正确的超时警报 #13822 修复替换时间变量参数 #13975 修复流程实例 DAG 无法显示依赖任务的问

2023-05-04

Apache Ignite 版本发布说明 Apache Ignite 分布式内存数据库 2.15.0 (!) 警告: 删除了Ignite节点的Daemon模式; 删除了废弃了的ignitevisorcmd工具; 删除了遗留的JMX Beans(ThreadPoolMXBean、CacheGroupMetricsMXBean、CacheMetricsMXBean、PersistenceMetri

2022-10-10

airbytehq/airbyte alibaba/DataX apache/camel apache/flume apache/incubator-seatunnel apache/inlong apache/sqoop dbt-labs/dbt-core debezium/debezium ververica/flink-cdc-connectors 流处理 apache/beam apache/flink apache/incubator-heron apache/incubator-streampark apache/kafka apache/pul

2022-04-07

一、背景 Apache Flink 作为新一代的实时计算框架已经被应用到各个行业与领域,虽说应用程度不同,但都会遇到一些使用上的痛点,基础的应用痛点比如 FlinkSQL 作业提交不友好、作业无监控报警等。很大程度上说,FlinkSQL 大大

2023-09-15

thub.com/devlive-community/openai-java-sdk 该版本着重支持 Apache Seatunnel 作为流水线支持框架 DataCap 已发布 发布版本 发布时间 1.14.0 2023-09-14 General 修复数据源检查任务返回空的问题 添加验证码 支持登

2023-10-10

Apache Hudi 0.14.0 现已发布。公告指出,该版本标志着一个重要的里程碑,具有一系列新功能和增强功能。其中包括引入Record Level Index、自动生成记录键 、用于增量读取的 hudi_table_changes函数等等。 值得注意的是,此版本还

2023-11-07

来了一系列实用的功能改进。 bboss 是一个基于开源协议 Apache License 发布的开源项目,由开源团队 bboss 运维,主要由以下三部分构成: Elasticsearch Highlevel Java Restclient , 一个高性能高兼容性的 Elasticsearch/Opensearch j

2023-09-05

发阶段,当然我们在 1.14.0 版中着重推出了基于 Apache Seatunnel 的中台功能,用于数据的摄取。同时我们开放了高度可定制化的配置项,用户可以通过自定义配置用于适配 Seatunnel 的各版本或者其他的新功能。话不多说,上图: