SeaTunnel 2.3.1 版本于近日发布,这是一次备受瞩目的重磅发布,有多项重要功能更新和优化。
在编程使用体验层面上,新版本提升了 SeaTunnel Zeta 稳定性,并提升了 CI/CD 的稳定性;在连接器层面上,新版本实现了 7+ 个新连接器,修复了已有常用连接器 bug,并提高了安全性。社区重构了多个底层基类,增加了一个重要特性 AI Compatible,经过优化后的API,用户可以直接使用ChatGPT 4.0 快速构建需要使用的SaaS Connector。
重大Feature更新
01 SeaTunnel Zeta
SeaTunnel 2.3.0 版本中发布了数据集成专用引擎 SeaTunnel Zeta 的首个版本,目前已经收到了大量社区用户的使用反馈。在 SeaTunnel 2.3.1 版本中,我们修复了所有用户反馈的 bug,同时对内存和线程的使用做了优化,Zeta 的稳定性得到了极大的提升。
2.3.1 版本中,社区也增加了多项 Zeta 新特性,包括专门的 JVM 参数配置文件、作业监控信息的客户端输出,Zeta 集群信息和作业信息的 Rest API 等。
在 checkpoint 层面,2.3.1 版本 Zeta 支持使用 OSS 作为 checkpoint 存储。同时支持对运行中的作业进行 savepoint 以及从 savepoint 中恢复作业。
此外,2.3.1 版本还增加了一套 Zeta 的 Rest API 可以用来获取运行在 Zeta 上的作业列表,作业的状态信息,以及 Zeta 集群节点的监控指标等,具体的使用方式可以参考 https://seatunnel.apache.org/docs/seatunnel-engine/rest-api/
02 AI Compatible
SeaTunnel 2.3.1 当中重构了Http接口和相关API,根据现有xGPT水平能力简化了SaaS Connector相关API和Connector构建流程,让ChatGPT 4.0 可以直接生成SaaS Connector,快速生成各类SaaS Connector接口,对比之下,用此方法得到的结果与开源贡献者写的代码相似度达 95%(参见附录)。
当然,因为 ChatGPT4.0 在 2021 年 10 月份进行数据更新,所以针对最新的 SaaS 接口适配还需要给一些向量化的最新文档才会有最新的接口适配。不过,这套重构后的 API 和代码框架可以让用户自己更快速地生成 Connector,并贡献到开源社区,让 SeaTunnel 接口更加强大。
连接器
01 新增7+个连接器
在修复已知连接器的 bug 和优化连接器的同时,社区新增加了 SAP HANA, Persistiq, TDEngine, SelectDB Cloud, Hbase, FieldMapper Transform 和 SimpleSQL Transform 等 7 个连接器。
02 重新实现SQL Transform
由于之前的 SQL Transform 连接器是基于 Flink SQL 和 Spark SQL 来定义的,导致 SQL Transform 无法适配多个引擎的执行,因此我们在 2.3.0 版本中移除了 SQL Transform 的功能。在 2.3.1 版本中,我们重新实现了 SQL Transform, SQL Transform 是不依赖任务特定的执行引擎的 API,可以完美运行在 Flink/Spark/Zeta 三种不同的引擎上。在此特别感谢贡献者马骋原(githubId: rewerma)主导和贡献了这个重要的 Feature。
关于 SQL Transform 已经支持的函数,可参考 https://seatunnel.apache.org/docs/2.3.1/transform-v2/sql-functions
03 CDC连接器新增SQL Server CDC
在CDC连接器层面,社区新增加了SQL Server CDC连接器,并对MySQL CDC进行了大量的优化,提升了MySQL CDC的稳定性。
04 新增CDC连接器输出debezium-json格式功能
此外,2.3.1 版本还新增了 CDC 连接器输出 debezium-json 格式的功能,用户可以使用 MySQL CDC 读取 binlog 并输出 debezium-json 格式的数据到 Kafka,这样用户可以创建新的同步任务读取 Kafka 中的 debezium-json 格式的数据并同步到目标数据源,或者可以直接写其它程序读取 Kafka 中的 debezium-json 格式的数据来进行一些指标计算。
安全性
在 2.3.1 版本之前,用户需要将数据库用户名、密码等信息明文配置在 config 文件中,这可能会带来一些安全性问题。在 2.3.1 版本中,我们增加了配置文件加密功能,用户可以在 config 文件中填写加密之后的数据库用户名、密码等信息。作业运行时,SeaTunnel 会基于默认的加解密算法对 config 文件中的内容进行解密。同时,加密功能提供了 SPI,用户可以基于自己的需求自定义加密解密的参数列表和加密解密的算法。
关于此功能的使用方式,可以参考https://seatunnel.apache.org/docs/2.3.1/connector-v2/Config-Encryption-Decryption
第三方引擎支持
SeaTunnel 2.3.1 版本支持了 Spark 3.3 版本,以及 Flink 1.14.6, Flink 1.15, Flink 1.16 等版本,基本覆盖了 Spark 和 Flink 的主流版本。
Client
新版本增加了作业配置的 SPI,之前只支持 hocon json 方式配置文件,现在开放了SPI,可以由用户自定义作业配置文件的格式以适应不同的业务系统集成需求。
优化
SeaTunnel 2.1.3 版本进行了多项重要优化,包括核心组件、连接器组件、CI/CD、Zeta(ST-Engine) 和 E2E 组件均有更改,涉及到添加新功能、改进现有功能以及优化测试和部署流程。一些值得注意的更改包括在 Core API 中添加并行性和列投影接口,在 Connector-V2 中引入 MySQL-CDC 源工厂和支持 JDBC 源连接器的仅一次语义,提高了 E2E 的 CI/CD 流程和稳定性,在 Zeta(ST-Engine) 中添加了当所有节点宕机时重新启动作业的逻辑,并使写数据超时时间可配置。
详细列表见 Realease Note 【Improve】部分。
文档
此外,新版本还对文档进行了一系列更新,包括添加 transform v2 文档和一些提示,以及改进各种 connector 的文档。
详见Realease Note 【Docs】部分。
文档地址:https://seatunnel.apache.org/versions/
Release Note
https://github.com/apache/incubator-seatunnel/blob/2.3.1/release-note.md
项目地址:https://seatunnel.apache.org/
下载地址:https://seatunnel.apache.org/download
致谢贡献者
TaoZex
liugddx
TyrantLucifer
hailin0
lightzhao
zhaoliang01
MonsterChenzhuo
ic4y
Hisoka-X
EricJoy2048
ashulin
FlechazoW
john8628
Carl-Zhou-CN
zhouyao
CalvinKirs
FWLamb
wendongdi
wenweideng
lhyundeadsoul
wuchunfu
Grypse
sunnyzhuzhu
lvshaokang
laglangyue
harveyyue
zy-kkk
voidking
liumengkai
wineternity
quanhongding
zhilinli123
mosence
ruanwenjun
kpretty
chucheng92
Al-assad
531651225
stdnt-xiao
rewerma
iture123
HuPengCheng
wfrong
附录:ChatGPT生成Connector代码步骤如下:
1. 先将重构后http基类代码喂入ChatGPT4.0 https://github.com/apache/incubator-seatunnel/blob/dev/seatunnel-connectors-v2/connector-http/connector-http-base/src/main/java/org/apache/seatunnel/connectors/seatunnel/http/source/HttpSource.java
2. 得到反馈后,给出SaaS Connector示例代码:https://github.com/apache/incubator-seatunnel/blob/dev/seatunnel-connectors-v2/connector-http/connector-http-github/src/main/java/org/apache/seatunnel/connectors/seatunnel/github/source/GithubSource.java
3. 直接给出指令:“参考上面示例代码 写一个Apache SeaTunnel Gitlab Connector的代码,要求有注释需用Java 编写”
对比之下,用此方法得到的结果与开源贡献者写的代码相似度达 95%,https://github.com/apache/incubator-seatunnel/blob/dev/seatunnel-connectors-v2/connector-http/connector-http-gitlab/src/main/java/org/apache/seatunnel/connectors/seatunnel/gitlab/source/GitlabSource.java