Apache Beam CloudBigtableIO读/写错误处理

问题描述 投票:1回答:1

[我们有一个基于Java的数据流管道,经过一些处理后,它将从Bigtable读取数据,并将其写回到Bigtable。我们将CloudBigtableIO用于这些目的。

我正在努力解决CloudBigtableIO中的故障处理问题。我还没有找到有关CloudBigtableIO内部和外部如何处理错误的任何参考/文档。

  1. CloudBigtableIO在BigtableOptionsFactory中有一堆选项,用于指定超时,要重试的grpc代码,重试限制。

    google.bigtable.grpc.retry.max.scan.timeout.retries-这是扫描操作的重试限制,还是也包括突变操作?如果这仅用于扫描,则对Mutation操作进行了多少次重试?它是可配置的吗?google.bigtable.grpc.retry.codes-这些代码是否对扫描和Mutate操作都启用重试?

  2. 定制选项将仅允许重试,在某些情况下,CloudBigtableIO会读取部分数据而不是请求的内容,但不会使管道失败吗?

  3. 当变异几百万条记录时,我认为我们可能会得到超出重试限制的错误,这种变异会发生什么?他们会失败吗?我们如何处理它们? BigQueryIO具有收集故障并提供通过侧面输出检索故障的方法的原因,为什么CloudBigtableIO没有此类功能?

    [在写入突变时,我们有时会出现DEADLINE_EXCEEDED错误,但日志尚不清楚突变是重试且成功还是Retries已用尽,我确实看到RetriesExhaustedWithDetailsException,但如果我们无法处理失败,那是没有用的

  4. ] >
  5. 如果将前面的步骤和CloudBigtableIO写操作融合在一起,是否会将这些故障抛回到数据流管道中的前面的步骤?启用批量突变后,如何将故障抛回到先前的步骤尚不清楚。

  6. [我们有一个基于Java的数据流管道,经过一些处理后,它将从Bigtable读取数据,并将其写回到Bigtable。我们将CloudBigtableIO用于这些目的。我正在尝试把头缠起来...

对于问题1,我相信google.bigtable.mutate.rpc.timeout.ms

将对应于变异操作,尽管Javadoc中指出该功能是实验性的。 google.bigtable.grpc.retry.codes允许您添加重试默认未设置的其他代码(默认包括DEADLINE_EXCEEDEDUNAVAILABLEABORTEDUNAUTHENTICATED

您可以在此处看到为突变超时设置配置的示例:https://github.com/googleapis/java-bigtable-hbase/blob/master/bigtable-client-core-parent/bigtable-hbase/src/test/java/com/google/cloud/bigtable/hbase/TestBigtableOptionsFactory.java#L169

apache-beam google-cloud-bigtable apache-beam-io
1个回答
1
投票

对于问题1,我相信google.bigtable.mutate.rpc.timeout.ms

© www.soinside.com 2019 - 2024. All rights reserved.