点亮 ⭐️ Star · 照亮开源之路
GitHub:https://github.com/apache/incubator-seatunnel

SeaTunnel Connector 接入计划
在近日举行的 SeaTunnel Connector 接入计划专题直播活动上,白鲸开源 高级工程师 王海林带来了《SeaTunnel Connector 接入计划与开发避坑指南》的分享,手把手教大家了解如何从一个新手,从头到尾地开发一个 connector,包括准备开发到测试、最终 PR 的全过程。

- 王海林 白鲸开源 高级工程师 -
开源爱好者,SkyWalking Committer、Dolphinscheduler & SeaTunnel Contributor,目前工作内容围绕性能监控、数据处理等方向,喜欢研究相关的技术实现以及参与社区的交流贡献
关于 connector 接入激励计划 认领/开发 connector 前的准备 开发中的一些小事 编写 E2E 测试的注意事项 提交 PR 前的准备
1 关于connector接入激励计划


2 认领/开发connector前的准备
01
什么是 Connector?

02
认领 Connector
03
编译工程


rm {your_maven_dir}/repository/org/apache/seatunnel ./mvnw clean 重新编译
04
了解 Connector 相关代码结构

工程代码结构
seatunnel-connectors-v2 存放 connector 子模块 seatunnel-connectors-v2-dist 管理 connectors-v2 maven 依赖
seatunnel-flink-connector-v2-example 运行在 flink 上的 example seatunnel-spark-connector-v2-example 运行在 spark 上的 example
seatunnel-flink-connector-v2-e2e 运行在 flink 上的 testcase seatunnel-spark-connector-v2-e2e 运行在 spark 上的 testcase
代码结构(接口、基类)
05
看看其他人怎么开发 Connector
3 开发中的一些小事

01
开发 Source 相关
Source#restoreEnumerator 恢复状态 Enumerator#snapshotState 存储分片分配 Reader#snapshotState 存储读取位置
02
开发 Sink 相关
Sink#restoreWriter 恢复状态 Writer#snapshotState 快照状态
Sink#createCommitter Writer#prepareCommit 预提交 Committer#commit、abort 二阶段提交

03
Connector 相关
04
如何寻求帮助
在你的 Issue 中描述问题并召唤活跃贡献者; 在邮件列表、Slack 中讨论; 通过微信群沟通(如果没有加入请关注 SeaTunnel 公众号入群/加小助手微信seatunnel1); 对接第三方组件可能会有社区对接群(让你事半功倍)。
4 编写E2E测试的注意事项
01
E2E 失败 - 测试用例网络地址冲突
spark、flink、e2e-testcase 依赖的外部组件(举例如 mysql),三者使用容器 networkAliases(host) 作为访问地址 spark、flink 两边的 e2e-testcase 可能在同一主机下并行运行 e2e-testcase 依赖的外部组件需要映射端口到主机供 e2e-testcase 访问
e2e-testcase 依赖的外部组件,映射到外部的端口、networkAliases 在 spark、flink 两边的 testcase 中不能一样 e2e-testcase 使用 localhost、上述映射端口访问外部组件 e2e 的配置文件中使用 networkAliases(host) 、容器内端口访问依赖的外部组件
02
E2E 失败 - Spark jar 包冲突
03
E2E 失败 - Connector jar 包冲突
主要在 E2E 时发生,因为 E2E 工程依赖了所有的 Connector 未来可能规划为每个 Connector(或版本) 提供单独的测试工程
04
E2E 不充分 - Sink 逻辑验证

05
E2E 不充分 - Source 验证数据
06
E2E 稳定性提升


07
E2E 提速
5 提交 PR 前的检查
完整的再编译工程 codestyle 验证、依赖验证 之前编译成功不代表现在还能编译成功 本地运行 E2E 成功 flink、spark 两边均做验证 补充或更改文档 提交前自己再 Review 一次 未被测试覆盖到的地方 之前已经 review 过了也需要再次检查 review 要包括所有文件, 不只是代码
Apache SeaTunnel

// 保持联络 //
微信号 : Seatunnel
来,和社区一同成长!
往期推荐
点击“阅读原文”,加入计划!