Apache SeaTunnel 2.3.13 即将发布。作为一个承上启下的重要版本,它在大幅增强核心引擎稳定性的同时,进一步补全了 CDC 场景的能力拼图,并向 AI ETL 领域迈出了关键一步。
通过对 2.3.13-release 分支的深度源码分析,我们为您提炼了本版本的核心更新概览。
核心亮点
1. 核心引擎:Flink Schema Evolution 与 Zeta 稳定性
-
Flink 引擎支持 CDC Schema Evolution (#9867)
这是 Flink 用户期待已久的功能。2.3.13 正式在 Flink 引擎层实现了源端 Schema 变更(DDL)的自动传递与适配,打通了从 CDC Source 到 Flink Engine 的最后一公里,使得 Flink 任务也能像 Zeta 引擎一样从容应对上游表结构变化。
-
Zeta 引擎深度优化
2. AI ETL:拥抱非结构化数据
- 多模态 Embedding 转换 (#9673)
新增Multimodal EmbeddingTransform,支持对文本和图像数据进行向量化处理。结合 Markdown 解析 能力,SeaTunnel 现在可以直接构建从"非结构化文档"到"向量数据库"的完整 RAG(检索增强生成)数据管道。 - Elasticsearch Vector 优化 (#10260)
优化了 Elasticsearch Sink 对向量参数的支持,使其更适配 AI 向量存储场景。
3. 连接器生态:多表同步与类型增强
- MongoDB :全面增强多表(Multi-table)同步模式,统一了非关系型数据源的 Schema 配置参数 (#10370)。
- HBase :Sink 端新增对
DATE,TIME,TIMESTAMP,DECIMAL类型的支持,并修复了 Decimal 反序列化问题 (#10291)。 - Hive :支持配置多个 Metastore URI 以实现自动故障转移 (#10253),并新增了 Socket/Connection 超时控制 (#10254)。
- JDBC/Redshift:升级驱动版本以解决 OOM 问题,并修复了大字段 Schema 合并时的整数溢出 Bug。
关键修复与优化
本版本修复了多个可能导致生产环境不稳定的关键 Bug,建议高负载场景用户重点关注:
| 组件 | 类型 | 问题描述 | 修复影响 |
|---|---|---|---|
| Core | Hang | FakeSource 在 restore 后可能因未发送 NoMoreSplits 而导致任务挂起 (#10275) |
高:解决特定场景下任务无法结束的问题 |
| ClickHouse | Leak | 修复 ClickhouseCatalogUtil 中的 ThreadLocal 内存泄漏 (#10264) |
高:防止长期运行服务的堆外内存溢出 |
| Redshift | OOM | 升级 JDBC 驱动解决大量数据读取时的 OOM (#10393) | 中:提升 Redshift 数据同步稳定性 |
| HBase | NPE | 修复读取空表时可能抛出的 NullPointerException (#10336) |
中:增强边界条件下的健壮性 |
| SSH | Crash | 升级 jsch 库修复缓冲区问题 (#10298) |
中:提升 SFTP/SSH 连接稳定性 |
深度功能解析:构建 AI 知识库数据流
2.3.13 的一个隐含核心主线是 "Unstructured Data to Vector"。以下 Demo 展示了如何利用新特性,将本地 Markdown 知识库解析并同步到向量存储(以 Console 为例)的完整流程。
场景描述
读取本地目录下的技术文档(Markdown),按章节解析结构化数据,并准备进行 Embedding 处理。
配置文件 (Demo)
hocon
env {
parallelism = 1
job.mode = "BATCH"
}
source {
LocalFile {
path = "/data/knowledge_base"
file_format_type = "markdown"
# 2.3.13 新增:Markdown 读取策略配置
parse_strategy = {
# 提取标题层级、内容及元数据
schema = [
{name = "doc_name", type = "string"},
{name = "heading", type = "string"},
{name = "content", type = "string"},
{name = "code_block", type = "string"}
]
}
}
}
transform {
# 1. 预处理:清洗文本
Replace {
source_table_name = "source_table"
result_table_name = "cleaned_table"
replace_field = "content"
pattern = "\\n+"
replacement = " "
}
# 2. (2.3.13+) AI 转换:调用模型生成 Embedding
# 注意:此功能依赖 Transform-V2 的 Embedding 插件
# Embedding {
# source_table_name = "cleaned_table"
# result_table_name = "vector_table"
# vector_field = "vector"
# model_provider = "openai"
# api_key = "${OPENAI_API_KEY}"
# }
}
sink {
# 模拟输出到向量数据库
Console {
source_table_name = "cleaned_table"
# 如果开启了 Embedding,这里可以预览生成的向量
}
}
源码导读
- Markdown 解析核心 :[MarkdownReadStrategy.java](file:///Users/apple/Desktop/github/seatunnel/seatunnel-connectors-v2/connector-file/connector-file-base/src/main/java/org/apache/seatunnel/connectors/seatunnel/file/source/reader/MarkdownReadStrategy.java)
该类利用flexmark-java库实现了对 Markdown AST 的遍历,将非结构化文本转化为 SeaTunnel 的Row结构。 - Schema Evolution 适配 :[FlinkRowConverter.java](file:///Users/apple/Desktop/github/seatunnel/seatunnel-translation/seatunnel-translation-flink/seatunnel-translation-flink-common/src/main/java/org/apache/seatunnel/translation/flink/serialization/FlinkRowConverter.java)
在 Flink 翻译层增加了对动态 Schema 变更的兼容逻辑。
总结
Apache SeaTunnel 2.3.13 在保持高速迭代的同时,明显加大了对稳定性 (Bug Fixes)和前沿场景(AI/CDC)的投入。无论是 Flink 用户的 CDC 痛点,还是 AI 工程师的非结构化数据处理需求,都能在这个版本中找到解决方案。
注:以上分析基于
2.3.13-release分支代码(Commite4052e95c),具体发布内容请以官方 Release Note 为准。