gpt4 book ai didi

java - Apache Beam 中的 BigQuery 插入重试策略

转载 作者:行者123 更新时间:2023-12-02 01:54:43 25 4
gpt4 key购买 nike

Apache Beam API 具有以下 BiqQuery 插入重试策略。

  • 如果我指定retryTransientErrors,Dataflow 作业的行为如何?
  • shouldRetry 提供来自 BigQuery 的错误,我可以决定是否应该重试。在哪里可以找到 BigQuery 的预期错误?

BiqQuery 插入重试策略

https://beam.apache.org/releases/javadoc/2.1.0/org/apache/beam/sdk/io/gcp/bigquery/InsertRetryPolicy.html

  • alwaysRetry - 始终重试所有失败。
  • neverRetry - 绝不重试任何失败。
  • retryTransientErrors - 重试除已知持续性错误之外的所有失败。
  • shouldRetry - 如果应重试此失败,则返回 true。

背景

  • 当我的 Cloud Dataflow 作业将非常旧的时间戳(从现在开始超过 1 年之前)插入 BigQuery 时,我收到以下错误。
 jsonPayload: {
exception: "java.lang.RuntimeException: java.io.IOException: Insert failed:
[{"errors":[{"debugInfo":"","location":"","message":"Value 690000000 for field
timestamp_scanned of the destination table fr-prd-datalake:rfid_raw.store_epc_transactions_cr_uqjp is outside the allowed bounds.
You can only stream to date range within 365 days in the past and 183 days in
the future relative to the current date.","reason":"invalid"}],
  • 出现第一个错误后,Dataflow 尝试重试插入,但始终因相同的错误而被 BigQuery 拒绝。
  • 它没有停止,因此我将 retryTransientErrors 添加到 BigQueryIO.Write 步骤,然后重试停止。

最佳答案

How Dataflow job behave if I specify retryTransientErrors?

所有错误都被视为暂时性错误,除非 BigQuery 指出错误原因是 "invalid", "invalidQuery", "notImplemented" 之一。

shouldRetry provides an error from BigQuery and I can decide if I should retry. Where can I find expected error from BigQuery?

你不能,因为错误是 not visible给来电者。我不确定这是否是故意的,或者 Apache Beam 是否应该公开错误,以便用户可以编写自己的重试逻辑。

关于java - Apache Beam 中的 BigQuery 插入重试策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57403980/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com