Apache SeaTunnel 2.3.13版本中,核心引擎有哪些变化?AI ETL趋势值得关注吗?

摘要:Apache SeaTunnel 2.3.13 即将发布。作为一个承上启下的重要版本,它在大幅增强核心引擎稳定性的同时,进一步补全了 CDC 场景的能力拼图,并向 AI ETL 领域迈出了关键一步。
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 引擎深度优化 远程分页查询支持 (#9951):显著提升了 SeaTunnel UI 及 REST API 在大规模任务场景下的响应速度与用户体验。 内存泄漏修复 (#10315):修复了取消挂起任务时的内存泄漏问题,提升了长期运行集群的稳定性。 多 Sink 场景指标修复 (#10376):解决了多目标写入时 Write Count 显示不准确的问题。 2. AI ETL:拥抱非结构化数据 多模态 Embedding 转换 (#9673) 新增 Multimodal Embedding Transform,支持对文本和图像数据进行向量化处理。结合 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) 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 分支代码(Commit e4052e95c),具体发布内容请以官方 Release Note 为准。