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 | 支持 | 支持 | 不可用 |
后续步骤
- 阅读 Apache Beam 文档中的 I/O 连接器相关内容。