Apache SeaTunnel 2.3.13 版本前瞻:核心引擎变化和 AI ETL 趋势值得关注
Apache SeaTunnel 2.3.13 即将发布。作为一个承上启下的重要版本,它在大幅增强核心引擎稳定性的同时,进一步补全了 CDC 场景的能力拼图,并向 AI ETL 领域迈出了关键一步。 通过对 Zeta 引擎深度优化 本版本修复了多个可能导致生产环境不稳定的关键 Bug,建议高负载场景用户重点关注: 2.3.13 的一个隐含核心主线是 "Unstructured Data to Vector"。以下 Demo 展示了如何利用新特性,将本地 Markdown 知识库解析并同步到向量存储(以 Console 为例)的完整流程。 读取本地目录下的技术文档(Markdown),按章节解析结构化数据,并准备进行 Embedding 处理。 Apache SeaTunnel 2.3.13 在保持高速迭代的同时,明显加大了对稳定性(Bug Fixes)和前沿场景(AI/CDC)的投入。无论是 Flink 用户的 CDC 痛点,还是 AI 工程师的非结构化数据处理需求,都能在这个版本中找到解决方案。2.3.13-release 分支的深度源码分析,我们为您提炼了本版本的核心更新概览。核心亮点
1. 核心引擎:Flink Schema Evolution 与 Zeta 稳定性
这是 Flink 用户期待已久的功能。2.3.13 正式在 Flink 引擎层实现了源端 Schema 变更(DDL)的自动传递与适配,打通了从 CDC Source 到 Flink Engine 的最后一公里,使得 Flink 任务也能像 Zeta 引擎一样从容应对上游表结构变化。2. AI ETL:拥抱非结构化数据
新增 Multimodal Embedding Transform,支持对文本和图像数据进行向量化处理。结合 Markdown 解析 能力,SeaTunnel 现在可以直接构建从“非结构化文档”到“向量数据库”的完整 RAG(检索增强生成)数据管道。
优化了 Elasticsearch Sink 对向量参数的支持,使其更适配 AI 向量存储场景。3. 连接器生态:多表同步与类型增强
DATE, TIME, TIMESTAMP, DECIMAL 类型的支持,并修复了 Decimal 反序列化问题 (#10291)。关键修复与优化
组件 类型 问题描述 修复影响 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 知识库数据流
场景描述
配置文件 (Demo)
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,这里可以预览生成的向量
}
}源码导读
该类利用 flexmark-java 库实现了对 Markdown AST 的遍历,将非结构化文本转化为 SeaTunnel 的 Row 结构。
在 Flink 翻译层增加了对动态 Schema 变更的兼容逻辑。总结
注:以上分析基于
2.3.13-release 分支代码(Commit e4052e95c),具体发布内容请以官方 Release Note 为准。