BigQuery 无法插入作业。工作流失败

and*_*rew 5 dataflow google-cloud-platform stackdriver

我需要通过 Dataflow 和 Beam 运行从 GCS 到 BigQuery 的批处理作业。我的所有文件都是具有相同架构的 avro。我创建了一个数据流 java 应用程序,它在较小的数据集(~1gb,大约 5 个文件)上成功。但是当我尝试在更大的数据集(>500gb,>1000 个文件)上运行它时,我收到一条错误消息

java.lang.RuntimeException: org.apache.beam.sdk.util.UserCodeException: java.lang.RuntimeException: Failed to create load job with id prefix 1b83679a4f5d48c5b45ff20b2b822728_6e48345728d4da6cb51353f0dc550c1b_00001_00000, reached max retries: 3, last failed load job: ...
Run Code Online (Sandbox Code Playgroud)

3 次重试后,它终止于:

Workflow failed. Causes: S57....... A work item was attempted 4 times without success....
Run Code Online (Sandbox Code Playgroud)

这一步是对 BigQuery 的加载。

堆栈驱动程序说处理卡在步骤....10m00s...和

Request failed with code 409, performed 0 retries due to IOExceptions, performed 0 retries due to unsuccessful status codes.....
Run Code Online (Sandbox Code Playgroud)

我查找了 409 错误代码,指出我可能有一个现有的作业、数据集或表。我已经删除了所有表并重新运行了应用程序,但它仍然显示相同的错误消息。

我目前仅限于 65 个工人,我让他们使用 n1-standard-4 cpu。

我相信还有其他方法可以将数据从 gcs 移动到 bq,但我需要演示数据流。

小智 1

“java.lang.RuntimeException:无法创建前缀为 beam_load_csvtobigqueryxxxxxxxxxxxxx 的作业,达到最大重试次数:3,上次失败的作业:null。位于 org.apache.beam.sdk.io.gcp.bigquery.BigQueryHelpers$PendingJob.runJob(BigQueryHelpers.爪哇:198)......“

  • 可能的原因之一可能是权限问题。确保与 BigQuery 交互的用户帐户在预定义角色“*BigQuery User”中具有权限“bigquery.jobs.create”