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

时间:2018-04-03 22:39:29

标签: google-cloud-platform dataflow 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: ...

重试3次后,终止于:

Workflow failed. Causes: S57....... A work item was attempted 4 times without success....

此步骤是对BigQuery的加载。

堆栈驱动程序表示处理过程中卡住了10个星期......并且

Request failed with code 409, performed 0 retries due to IOExceptions, performed 0 retries due to unsuccessful status codes.....

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

我目前仅限于65名工人,我使用n1-standard-4 cpu。

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

2 个答案:

答案 0 :(得分:0)

我使用“ roles / bigquery.jobUser”,“ roles / bigquery.dataViewer”和“ roles / bigquery.user”遇到了相同的问题。但是只有当授予“ roles / bigquery.admin”时,问题才能得到解决。

答案 1 :(得分:-1)

“ java.lang.RuntimeException:无法创建带有前缀beam_load_csvtobigqueryxxxxxxxxxxxxxx的作业,已达到最大重试次数:3,上次失败的作业:空。     在org.apache.beam.sdk.io.gcp.bigquery.BigQueryHelpers $ PendingJob.runJob(BigQueryHelpers.java:198).....“

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