Apache Beam I/O 连接器最佳实践

Dataflow 中的数据处理可以高度并行化。大部分并行由 Dataflow 自动处理。I/O 连接器位于流水线与架构其他部分(例如文件存储、数据库和消息传递系统)之间的边界处。因此,针对并行性的实现,I/O 连接器通常有特定的注意事项。

一般最佳实践

以下列表介绍了在 Dataflow 中使用 I/O 连接器的一般最佳实践。

  • 阅读流水线中的连接器的 Javadoc、Pydoc 或 Go 文档。如需了解详情,请参阅 Apache Beam 文档中的 I/O 连接器

  • 使用最新版本的 Apache Beam SDK。I/O 连接器一直在不断改进,以增加功能和修复已知问题。

  • 开发流水线时,平衡作业的并行性非常重要。如果作业的并行性太低,速度就会比较慢,并且数据可能在来源中积压。但是,并行性过高可能导致请求过多,使接收器超负荷运行。

  • 不要依赖元素的排序。Dataflow 通常不保证集合中的元素顺序。

  • 如果您选择的 SDK 中没有 I/O 连接器,请考虑使用跨语言框架来使用其他 SDK 的 I/O 连接器。此外,连接器并不总是在 SDK 之间提供对等的功能。如果另一个 SDK 的连接器提供您需要的功能,您可以将其用作跨语言转换。

  • 编写自定义 I/O 连接器通常并非易事。请尽可能使用现有连接器。如果您需要实现自定义 I/O 连接器,请参阅开发新的 I/O 连接器

  • 如果流水线失败,请检查 I/O 连接器记录的错误。请参阅排查 Dataflow 错误

各个 I/O 连接器的最佳实践

以下主题列出了各个 I/O 连接器的最佳实践:

I/O 连接器读取Write
BigQuery 从 BigQuery 中读取 写入 BigQuery
Bigtable 从 Bigtable 中读取 写入 Bigtable
Cloud Storage 从 Cloud Storage 读取数据 写入 Cloud Storage

Google 支持的 I/O 连接器

下表列出了 Dataflow 支持的 Apache Beam I/O 连接器。如需查看 Apache Beam I/O 连接器的完整列表(包括由 Apache Beam 社区开发并由其他运行程序支持的连接器),请参阅 Apache Beam 文档中的 I/O 连接器

I/O 连接器名称 Java Python Go
AvroIO 支持 支持 支持
BigQueryIO 支持 支持 支持
BigTableIO 支持 支持接收器 支持接收器
DatastoreIO 支持 支持 支持
FhirIO(医疗保健) 支持 不可用 支持
FileIO 支持 支持 支持
GcsFileSystem 支持 支持 支持
JdbcIO 支持 跨语言支持 跨语言支持
KafkaIO 支持 跨语言支持 跨语言支持
LocalFileSystem 支持 支持 支持
ParquetIO 支持 支持 支持
PubSubIO 支持 支持 支持
SpannerIO 支持 跨语言支持 支持
TextIO 支持 支持 支持
TFRecordIO 支持 支持 不可用

后续步骤