扳手负载性能非常低

Spanner load performance very low

我正在尝试使用 Dataflow 在 Spanner 中写入数 TB 的数据。

spanner 实例配置了足够的节点,Dataflow 是 运行 n1-standard-16 台机器。

作业 运行 非常慢。 Spanner CPU 利用率始终在限制范围内,写入延迟也非常低(以毫秒为单位)。基本上一切似乎都在掌控之中。此实例上没有同时进行其他 read/write 操作。

负载可能有大约。一百万条记录,这些记录可能与 Spanner 中的某些记录具有相同的键。我正在使用 InsertBuilder 来避免在 Spanner 中写入此类行。这可能是性能低下的主要原因吗?我还将 writeFailureMode() 用作 "Report Failures"(而不是 "Fail Fast")。所以根据我的说法,"ALREADY EXISTS" 不应该对性能造成如此大的影响,但我不确定。

错误来自 Beam SpannerIO.java。 SpannerIO 尝试将多个变异组批处理在一起,以更高效地写入 Cloud Spanner。但是,如果一个突变组有一个已经存在的密钥,则不能完整地写入该批次。相反,每个突变组都被单独尝试以成功写入每个没有重复键的突变组。由于在这种情况下批量大小实际上变成了一个,因此插入性能会降低。