从 Dataflow 写入 Bigtable

如需将 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 服务器有足够的资源可用于传送数据。

后续步骤