我需要通过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,但我需要演示数据流。
答案 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).....“