【发布时间】:2020-06-15 02:11:17
【问题描述】:
我们有一个基于 Java 的数据流管道,它从 Bigtable 读取数据,经过一些处理后将数据写回 Bigtable。我们将 CloudBigtableIO 用于这些目的。
我正在尝试解决 CloudBigtableIO 中的故障处理问题。我还没有找到任何关于如何在 CloudBigtableIO 内部和外部处理错误的参考/文档。
-
CloudBigtableIO 在 BigtableOptionsFactory 中有一堆选项,它们指定超时、重试的 grpc 代码、重试限制。
google.bigtable.grpc.retry.max.scan.timeout.retries - 这是扫描操作的重试限制还是它也包括变异操作?如果这只是为了扫描,那么对 Mutation 操作进行了多少次重试?它是可配置的吗? google.bigtable.grpc.retry.codes - 这些代码是否启用扫描、变异操作的重试?
自定义选项只会启用重试,是否会出现 CloudBigtableIO 读取部分数据而不是请求的数据但不会导致管道失败的情况?
-
当改变几百万条记录时,我认为我们可能会得到超出重试限制的错误,这样的突变会发生什么?他们只是失败了吗?我们如何在管道中处理它们? BigQueryIO 具有收集故障并提供一种通过侧输出检索故障的功能,为什么 CloudBigtableIO 没有这样的功能?
我们在编写突变时偶尔会遇到 DEADLINE_EXCEEDED 错误,但日志不清楚突变是重试成功还是重试已用尽,我确实看到了 RetriesExhaustedWithDetailsException 但如果我们无法处理失败,那将毫无用处
如果前一步和 CloudBigtableIO 写入融合,这些故障是否会返回到数据流管道中的前一步?启用批量突变后,如何将故障退回到前面的步骤并不清楚。
【问题讨论】:
-
您可以尝试将您的问题发送到 user@beam.apache.org 以获得更好的答案。
标签: apache-beam google-cloud-bigtable apache-beam-io