用途:这是 Apache Beam 官方关于开发新 I/O 连接器的端到端指南,目标是让新连接器符合现代最佳实践:支持 Schema、可通过扩展服务用于跨语言(Python、Go)流水线,并能接入 Beam YAML 与 Managed I/O API。
主要能力与步骤:
- 模块结构:Java 连接器放在 sdks/java/io/<connector-name>,使用标准 Beam Gradle 约定,声明 core、model:pipeline 及外部客户端依赖。
- 核心 IO 变换:采用 AutoValue builder 模式,读取用 Splittable DoFn(SDF)而非旧 Source 类,写出避免单 worker 瓶颈,可选 DoFn 批处理、两阶段提交、基于 FileIO 的 sink,并支持死信队列输出失败记录。
- 扩展 Pipeline Model Proto:在 external_transforms.proto 的 ManagedTransforms.Urns 中定义读写 URN,并运行 ./gradlew :model:pipeline:generateProto :model:pipeline:compileJava。
- 实现 SchemaTransformProvider:用 @AutoService 注册,提供 identifier、description、from 与 outputCollectionNames。
- 接入 Managed API:在 Managed.java 中定义常量并注册到 READ_TRANSFORMS 或 WRITE_TRANSFORMS。
- 扩展服务注册:在 sdks/java/io/expansion-service/build.gradle 添加 runtimeOnly 依赖。
- Python 与 YAML 集成:在 managed.py 导出标识符并映射 URN,在 external.py 映射到扩展服务 jar。
- 验证测试:单元测试、Managed API 翻译测试、集成测试,并补充文档与 GitHub Actions。
适用场景:为 Beam 新增数据源或数据汇连接器,并希望其可用于 Java、Python、Go 及 YAML 流水线。
限制:资料未提供具体收费、价格、平台或效果信息;实现细节需遵循 Beam 代码规范,尤其注意并行拆分与重试可能带来的数据丢失或重复问题。