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

有人问我谷歌云数据流BigQueryIO.Write发生未知错误(http代码500)吗?

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

  • 4月,5月和6月的数据格式相同。
  • 将作者从BigQuery改为TextIO,工作会成功,所以我认为数据格式是好的。
  • 日志仪表板没有任何错误日志…..
  • 系统只有同样的未知错误

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

“执行BigQuery导入作业”后出现错误消息:

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启用此实验: – --experiments=enable_custom_bigquery_sink

在Dataflow SDK for Java 2.x中,此行为是默认行为,不需要进行任何实验。

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

希望有所帮助!