如需将 Dataflow 中的数据写入 Bigtable,请使用 Apache Beam Bigtable I/O 连接器。
并行数量
并行性由 Bigtable 集群中的节点数量控制。每个节点管理一个或多个键范围,但在负载均衡过程中键范围会在节点之间移动。如需了解详情,请参阅 Bigtable 文档中的了解性能。
您需要为实例集群中的节点数量付费。请参阅 Bigtable 价格。
性能
下表显示了 Bigtable I/O 写入操作的性能指标。工作负载使用 Java 版 Apache Beam SDK 2.48.0 在一个 e2-standard2
工作器上运行。它们未使用 Runner v2。
1 亿条记录 | 1 KB | 1 列 | 吞吐量(字节) | 吞吐量(元素) |
---|---|---|
Write | 65 MBps | 每秒 60,000 个元素 |
这些指标基于简单的批处理流水线。它们旨在比较 I/O 连接器之间的性能,不一定代表实际流水线。Dataflow 流水线性能很复杂,它受到多个因素的影响,包括虚拟机类型、正在处理的数据量、外部来源和接收器的性能以及用户代码。指标基于运行 Java SDK,不代表其他语言 SDK 的性能特征。如需了解详情,请参阅 Beam IO 性能。
最佳实践
一般情况下,请避免使用事务。事务不保证具有幂等性,并且 Dataflow 可能会因重试而多次调用事务,从而导致意外值。
单个 Dataflow 工作器可能会处理许多键范围的数据,从而导致写入 Bigtable 的效率低下。使用
GroupByKey
按 Bigtable 键对数据进行分组可以显著提高写入性能。如果您要将大型数据集写入 Bigtable,请考虑调用
withFlowControl
。此设置会自动限制发送到 Bigtable 的流量的速率,以确保 Bigtable 服务器有足够的资源可用于传送数据。
后续步骤
- 阅读 Bigtable I/O 连接器文档。
- 参阅 Google 提供的模板列表。