如需将数据从 Bigtable 读取到 Dataflow,请使用 Apache Beam Bigtable I/O 连接器。
并行数量
并行性由 Bigtable 集群中的节点数量控制。每个节点管理一个或多个键范围,但在负载均衡过程中键范围会在节点之间移动。如需了解详情,请参阅 Bigtable 文档中的读取和性能。
您需要为实例集群中的节点数量付费。请参阅 Bigtable 价格。
性能
下表显示了 Bigtable 读取操作的性能指标。工作负载使用 Java 版 Apache Beam SDK 2.48.0 在一个 e2-standard2
工作器上运行。它们未使用 Runner v2。
1 亿条记录 | 1 KB | 1 列 | 吞吐量(字节) | 吞吐量(元素) |
---|---|---|
读取 | 180 MBps | 每秒 170,000 个元素 |
这些指标基于简单的批处理流水线。它们旨在比较 I/O 连接器之间的性能,不一定代表实际流水线。Dataflow 流水线性能很复杂,它受到多个因素的影响,包括虚拟机类型、正在处理的数据量、外部来源和接收器的性能以及用户代码。指标基于运行 Java SDK,不代表其他语言 SDK 的性能特征。如需了解详情,请参阅 Beam IO 性能。
最佳实践
对于新流水线,请使用
BigtableIO
连接器,而不是CloudBigtableIO
。为每种类型的流水线创建单独的应用配置文件。应用配置文件支持更好的指标来区分流水线之间的流量,可用于支持和跟踪使用情况。
监控 Bigtable 节点。如果您遇到性能瓶颈,请检查 Bigtable 中的资源(如 CPU 利用率)是否受到限制。如需了解详情,请参阅 Monitoring。
通常,大多数流水线的默认超时已调整到适合的值。如果流式处理流水线在从 Bigtable 读取数据时卡住,请尝试调用
withAttemptTimeout
来调整尝试超时。请考虑启用 Bigtable 自动扩缩或调整 Bigtable 集群的大小,以随 Dataflow 作业的大小而扩缩。
请考虑在 Dataflow 作业上设置
maxNumWorkers
以限制 Bigtable 集群的负载。如果在重排之前对 Bigtable 元素进行了大量处理,则对 Bigtable 的调用可能会超时。在这种情况下,您可以调用
withMaxBufferElementCount
来缓冲元素。此方法会将读取操作从流式转换为分页,从而避免该问题。如果您为流式处理流水线和批处理流水线使用单个 Bigtable 集群,并且 Bigtable 端的性能下降,请考虑在该集群上设置复制。然后,分离批处理和流式处理流水线,使它们从不同的副本读取数据。如需了解详情,请参阅复制概览。
后续步骤
- 阅读 Bigtable I/O 连接器文档。
- 参阅 Google 提供的模板列表。