2

有人發生過與我相同的問題,Google Cloud Dataflow BigQueryIO.Write發生未知錯誤(http code 500)?我使用Dataflow處理4月,5月,6月的一些數據,我使用相同的代碼來處理4月份的數據(400MB)並寫入BigQuery成功,但是當我處理May(60MB)或6月(90MB)數據時,這是失敗的。Google Cloud Dataflow BigQueryIO.Write發生未知錯誤(http code 500)

  • 4月,5月和6月的數據格式相同。
  • 將作者從BigQuery改爲TextIO,工作會成功,所以我認爲數據格式不錯。
  • 登錄儀表板沒有任何錯誤日誌.....
  • 系統唯一相同的未知錯誤

我寫的代碼是在這裏:「執行的BigQuery導入作業」後http://pastie.org/10907947

錯誤信息:

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 

enter image description here

回答

3

對不起感到沮喪。看起來您正在寫入BQ的文件數量受到限制。這是一個我們正在修復的已知問題。

與此同時,您可以通過減少輸入文件的數量或重新分割數據來解決此問題(執行GroupByKey然後取消組合數據 - 在語義上它是無操作的,但它會強制數據物化,以便寫操作的並行性不受讀取的並行性限制)。

2

數據流SDK的Java 1.x的:作爲一種變通方法,您可以啓用這個實驗:--experiments=enable_custom_bigquery_sink

在數據流SDK的Java版本是2.x,這種行爲是默認的,沒有實驗是必要的。

請注意,在這兩個版本中,如果作業失敗,GCS中的臨時文件可能會遺留下來。

希望有幫助!

相關問題