Apache Beam API 具有以下 BiqQuery 插入重試策略。如果我指定retryTransientErrors數(shù)據(jù)流作業(yè)的行為如何?shouldRetry提供來自 BigQuery 的錯誤,我可以決定是否應(yīng)該重試。在哪里可以找到 BigQuery 的預(yù)期錯誤?BiqQuery 插入重試策略alwaysRetry - 始終重試所有失敗。neverRetry - 從不重試任何失敗。retryTransientErrors - 重試所有失敗,已知的持續(xù)性錯誤除外。shouldRetry - 如果應(yīng)該重試此失敗,則返回 true。背景當(dāng)我的 Cloud Dataflow 作業(yè)將非常舊的時間戳(從現(xiàn)在開始超過 1 年)插入 BigQuery 時,出現(xiàn)以下錯誤。?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 inthe future relative to the current date.","reason":"invalid"}],在第一個錯誤之后,Dataflow 嘗試重試插入,但它總是因相同的錯誤而被 BigQuery 拒絕。它沒有停止,所以我將retryTransientErrors添加到 BigQueryIO.Write 步驟,然后重試停止了。
BiqQuery 在 Apache Beam 中插入重試策略
阿波羅的戰(zhàn)車
2023-05-24 16:17:54