Apache SeaTunnel 数据集成插件开发最新经验总结!

在Apache SeaTunnel的最新插件开发中,connector-v2 maxcompute 连接器实现了基于CatalogTable + SaveMode的新版本。

本文主要给大家分享了源端的关键改动包括弃用了过时的方法,改为通过CatalogTable实现数据传递。汇端则增加了对multi-table sink和saveMode接口的实现,并需手动管理auto service注解等经验方法!

此外,开发了特定的catalog以处理公共参数和客户端操作。

connector-v2 maxcompute 连接器

connector-v2 maxcompute 连接器实现了基于CatalogTable + SaveMode的新版本。

a) 源端的核心改动

  • 新版本中SeaTunnelSource继承自SatunnelPluginLifeCycle接口,其中包含了一个prepare方法。该方法原本用于初始化源端中的config参数,以及一些预处理工作,如删除数据、执行SQL等。
  • SeaTunnelSource中的getProducedType方法用于存储SeatunnelRowType,即列映射转换信息的覆写。

改动如下:

  • 不再使用两个已过时的方法。
  • 在构造函数中创建CatalogTable,并在新方法List<CatalogTable> getProducedCatalogTables()中实现catalog的数据传递。在新版本中,catalogTable将从源端传递到汇端,作为后续saveMode里批量同步建表的SQL拼接来源。
  • SeatunnelRowType可以从catalogTable中获取,以适配现有连接器,也可以自己封装公共参数进行传递。

关于Catalog:

  • 我们通过getTable获取CatalogTable。如果配置了自定义列(column),以适配DataX,我们需要基于column生成CatalogTable

b) SInk端的核心改动

  • MaxcomputeSinkFactory中,额外实现了createSink方法,从上下文中获取catalogReadonlyConfig
  • Sink需要去除auto service注解,并实现multi-table sinksaveMode接口。
  • 基于DefaultSaveModeHandler,通过schemaSaveModeDataSaveMode配置,利用catalog中的方法实现数据清理、建表或个性化操作。
  • catalog实现了truncate table接口,用于数据删除和分区重建。

去除auto_service注解的原因:

  • 如果某个连接器汇端(例如maxcompute)已经实现了新模式接口,不再通过过时的prepare方法注入config,而是通过构造函数从上下文传入的catalogtable获取内部seatunnelRowType的适配。这个连接器在排序上比较靠前,AbstractPluginDiscovery在服务加载时总是首先发现它。但是,如果其他插件(例如clickhouse)仍在使用旧模式(prepare),则MultipleTableJobConfigParser解析汇端会将其视为过时插件,并回退到JobConfigParser进行适配。在parseSink方法中,AbstractPluginDiscovery仍会扫描所有通过autoService注解注入的SeaTunnelSink插件。此时,它遇到的第一个插件maxcompute的构造函数不能适配旧模式的实例初始化,导致失败。
  • 这导致了Maxcompute到Clickhouse数据同步时,报出MaxcomputeSink无法初始化的问题。
  • MaxcomputeSinkWriter需要额外实现SupportMutiTableSinkWriter,否则无法进行适当的转换。

如果要指定部分列回流:

  • 必须比较catalogTable中的列数量与指定的自定义列数量,两者相等才可以进行回流。
  • truncate -> data_save_mode / schema_save_mode
  • 支持列数据的隐式转换(seatunnel row数据是一个Object[]数组,需要结合CatalogTable TableSchema + Opds TableSchema

c) 开发特定的catalog

  • 需要实现公共Catalog接口,其中的openclose可以处理一些公共参数和客户端操作。
  • catalog需要通过catalog factory进行实例化,并通过auto service进行装配加载。

本文由 白鲸开源科技 提供发布支持!

相关推荐
武子康20 小时前
大数据-236 离线数仓 - 会员指标验证、DataX 导出与广告业务 ODS/DWD/ADS 全流程
大数据·后端·apache hive
武子康2 天前
大数据-235 离线数仓 - 实战:Flume+HDFS+Hive 搭建 ODS/DWD/DWS/ADS 会员分析链路
大数据·后端·apache hive
DianSan_ERP2 天前
电商API接口全链路监控:构建坚不可摧的线上运维防线
大数据·运维·网络·人工智能·git·servlet
够快云库2 天前
能源行业非结构化数据治理实战:从数据沼泽到智能资产
大数据·人工智能·机器学习·企业文件安全
AI周红伟2 天前
周红伟:智能体全栈构建实操:OpenClaw部署+Agent Skills+Seedance+RAG从入门到实战
大数据·人工智能·大模型·智能体
B站计算机毕业设计超人2 天前
计算机毕业设计Django+Vue.js高考推荐系统 高考可视化 大数据毕业设计(源码+LW文档+PPT+详细讲解)
大数据·vue.js·hadoop·django·毕业设计·课程设计·推荐算法
计算机程序猿学长2 天前
大数据毕业设计-基于django的音乐网站数据分析管理系统的设计与实现(源码+LW+部署文档+全bao+远程调试+代码讲解等)
大数据·django·课程设计
B站计算机毕业设计超人2 天前
计算机毕业设计Django+Vue.js音乐推荐系统 音乐可视化 大数据毕业设计 (源码+文档+PPT+讲解)
大数据·vue.js·hadoop·python·spark·django·课程设计
十月南城3 天前
数据湖技术对比——Iceberg、Hudi、Delta的表格格式与维护策略
大数据·数据库·数据仓库·hive·hadoop·spark
中烟创新3 天前
灯塔AI智能体获评“2025-2026中国数智科技年度十大创新力产品”
大数据·人工智能·科技