文件:0:来自 Google BigQuery 加载作业的意外

Posted

技术标签:

【中文标题】文件:0:来自 Google BigQuery 加载作业的意外【英文标题】:File: 0: Unexpected from Google BigQuery load job 【发布时间】:2014-05-21 07:16:33 【问题描述】:

我有一个压缩的 json 文件(900MB,换行符分隔)并通过bq 命令加载到一个新表中,然后加载失败:

例如

bq load --project_id=XXX --source_format=NEWLINE_DELIMITED_JSON --ignore_unknown_values mtdataset.mytable gs://xxx/data.gz schema.json

Waiting on bqjob_r3ec270ec14181ca7_000001461d860737_1 ... (1049s) Current status: DONE    
BigQuery error in load operation: Error processing job 'XXX:bqjob_r3ec270ec14181ca7_000001461d860737_1': Too many errors encountered. Limit is: 0.
Failure details:
- File: 0: Unexpected. Please try again.

为什么会出错?

我再次尝试使用--max_bad_records,仍然没有有用的错误消息

bq load --project_id=XXX --source_format=NEWLINE_DELIMITED_JSON --ignore_unknown_values --max_bad_records 2 XXX.test23 gs://XXX/20140521/file1.gz schema.json 
Waiting on bqjob_r518616022f1db99d_000001461f023f58_1 ... (319s) Current status: DONE    
BigQuery error in load operation: Error processing job 'XXX:bqjob_r518616022f1db99d_000001461f023f58_1': Unexpected. Please try again.

并且在控制台中也找不到任何有用的消息。

BigQuery 团队,你能用作业 ID 看看吗?

【问题讨论】:

【参考方案1】:

据我所知,一份工作有两个错误部分。有一个错误结果,这就是你现在看到的。还有第二个,应该是一连串错误。这一秒很重要,因为您可能会有错误,但实际工作可能会成功。

您也可以在 BQ 工具上设置--max_bad_records=3。在这里查看更多参数https://developers.google.com/bigquery/bq-command-line-tool

您可能对每一行都有一个错误,因此您应该先从这个大文件中尝试一个样本集。

还有一个开放的功能请求来改进错误信息,你可以star(投票)这张票https://code.google.com/p/google-bigquery-tools/issues/detail?id=13

这个答案将由 BQ 团队获得,因此我向他们分享:我们需要一个端点,我们可以在其中根据作业 ID、状态或错误流进行查询。获得完整的错误列表会很有帮助,这将有助于调试 BQ 作业。这很容易实现。

【讨论】:

我已经尝试使用max_bad_records,再次运行,在命令行或Web控制台中仍然没有有用的消息。 样本中有多少行?你试过样品吗? @Pentium10:您始终可以使用bq show -j <job_id> 从特定作业中恢复错误(您可能需要使用--format=prettyjson 来获取每个细节)。【参考方案2】:

我在 BigQuery 日志中查找了这项作业,不幸的是,在读取了大约 930 MB 之后,没有比“读取失败”更多的信息了。

我提交了一个错误,我们将重要的错误信息放在一个代码路径中并提交了修复。但是,此修复程序要到下周才能生效,而我们所做的只是为我们提供更多诊断信息。

由于这是可重复的,因此不太可能是从 GCS 读取的瞬时错误。这意味着两个问题之一:我们无法解码 .gz 文件,或者该特定 GCS 对象有问题。

对于第一个问题,您可以尝试解压缩文件并将其重新上传为未压缩。虽然通过网络发送千兆字节的数据听起来很痛苦,但好消息是导入会更快,因为它可以并行完成(我们不能并行导入压缩文件,因为它只能读取顺序)。

对于第二个问题(不太可能),您可以尝试自己下载文件以确保不会出错,或者尝试重新上传相同的文件并查看是否有效。

【讨论】:

以上是关于文件:0:来自 Google BigQuery 加载作业的意外的主要内容,如果未能解决你的问题,请参考以下文章

使用来自 Google BigQuery 的数据更新电子表格不起作用

BigQuery google.cloud.exceptions.ServiceUnavailable 503

如何使用 Google Apps 脚本将来自 Google 电子表格和 ScriptDB 的数据插入 BigQuery 表

有没有办法将来自多个来源的数据与 Google 的新 BigQuery 混合?

Google BigQuery SQL:计算来自其他商店的用户

适用于 BigQuery 的最佳 Google Cloud Storage