Google Cloud Dataflow BigQueryIO.Write 发生未知错误(http 代码 500)

Google Cloud Dataflow BigQueryIO.Write occur Unknown Error (http code 500)

是否有人遇到与我相同的问题 Google Cloud Dataflow BigQueryIO.Write 发生未知错误(http 代码 500)?

我在 4 月、5 月、6 月使用 Dataflow 处理一些数据,我使用相同的代码处理 4 月数据 (400MB) 并成功写入 BigQuery,但是当我处理 5 月 (60MB) 或 6 月 (90MB) 数据时, 失败了。

我写的代码在这里:http://pastie.org/10907947

"Executing BigQuery import job" 后的错误消息:

Workflow failed. Causes: 
(cc846): S01:Read Files/Read+Window.Into()+AnonymousParDo+BigQueryIO.Write/DataflowPipelineRunner.BatchBigQueryIOWrite/DataflowPipelineRunner.BatchBigQueryIONativeWrite failed., 
(e19a27451b49ae8d): BigQuery import job "dataflow_job_631261" failed., (e19a745a666): BigQuery creation of import job for table "hi_event_m6" in dataset "TESTSET" in project "lib-ro-123" failed., 
(e19a2749ae3f): BigQuery execution failed., 
(e19a2745a618): Error: Message: An internal error occurred and the request could not be completed. HTTP Code: 500

抱歉让您失望了。看起来您在写入 BQ 的文件数量上遇到了限制。这是一个我们正在修复的已知问题。

与此同时,您可以通过减少输入文件的数量或重新分片数据来解决此问题(执行 GroupByKey 然后取消分组数据 - 从语义上讲这是一个空操作,但它会强制数据要具体化,以便写入操作的并行性不受读取并行性的限制。

Dataflow SDK for Java 1.x:作为解决方法,您可以在以下位置启用此实验:--experiments=enable_custom_bigquery_sink

在 Java 2.x 的 Dataflow SDK 中,此行为是默认行为,无需实验。

请注意,在这两个版本中,如果您的作业失败,GCS 中的临时文件可能会遗留。

希望对您有所帮助!