插入 BigQuery 的数据流因 asia-northeast1 位置的大量文件而失败

Posted

技术标签:

【中文标题】插入 BigQuery 的数据流因 asia-northeast1 位置的大量文件而失败【英文标题】:Dataflow insert into BigQuery fails with large number of files for asia-northeast1 location 【发布时间】:2018-08-17 11:13:30 【问题描述】:

我在 Cloud Composer 上使用 Cloud Storage Text to BigQuery 模板。

模板是从 Python google api 客户端踢出来的。

同一个程序

在美国位置工作正常(适用于 Dataflow 和 BigQuery)。 在 asia-northeast1 位置失败。 在 asia-northeast 位置的较少(少于 10000 个)输入文件工作正常。

有人对此有任何想法吗? 出于商业原因,我想在东北亚地区执行。


更多关于失败的细节:

程序一直工作到“ReifyRenameInput”,失败了。

dataflow job failed

错误信息如下:

java.io.IOException: Unable to insert job: beam_load_textiotobigquerydataflow0releaser0806214711ca282fc3_8fca2422ccd74649b984a625f246295c_2a18c21953c26c4d4da2f8f0850da0d2_00000-0, aborting after 9 . 

at org.apache.beam.sdk.io.gcp.bigquery.BigQueryServicesImpl$JobServiceImpl.startJob(BigQueryServicesImpl.java:231)
 at org.apache.beam.sdk.io.gcp.bigquery.BigQueryServicesImpl$JobServiceImpl.startJob(BigQueryServicesImpl.java:202)
 at org.apache.beam.sdk.io.gcp.bigquery.BigQueryServicesImpl$JobServiceImpl.startCopyJob(BigQueryServicesImpl.java:196)
 at org.apache.beam.sdk.io.gcp.bigquery.WriteRename.copy(WriteRename.java:144) 
at org.apache.beam.sdk.io.gcp.bigquery.WriteRename.writeRename(WriteRename.java:107) 
at org.apache.beam.sdk.io.gcp.bigquery.WriteRename.processElement(WriteRename.java:80)
 Caused by: com.google.api.client.googleapis.json.GoogleJsonResponseException: 
404 Not Found  "code" : 404, "errors" : [  "domain" : "global", "message" : "Not found: Dataset pj:datasetname", "reason" : "notFound"  ], "message" : "Not found: Dataset pj:datasetname" 

(pj和数据集名不是实名,是outputTable参数的项目名和数据集名)

虽然报错信息说数据集未找到,但数据集肯定存在。

此外,程序结束后在数据集中创建了一些看似临时表的新表。

【问题讨论】:

【参考方案1】:

根据this public issue tracker,这是与您的 Beam SDK 版本相关的已知问题。 Beam 2.5.0 SDK版本没有这个问题。

【讨论】:

感谢您的评论,但我看不到您的页面(谷歌内的妈妈...)。请给我另一个链接好吗?

以上是关于插入 BigQuery 的数据流因 asia-northeast1 位置的大量文件而失败的主要内容,如果未能解决你的问题,请参考以下文章

BigQuery 数据传输作业因内部错误而失败(错误:80038528)

BigQuery - 插入数据的问题

BigQuery 代码因使用 pandas python 客户端库的 MemoryError 而失败

通过 bigquery-python 库向 BigQuery 插入大量数据

在bigquery中以编程方式更新/插入数据

使用 Golang 将嵌套数据插入 BigQuery