我有一个压缩的json文件(900MB,换行符分隔),并通过bq
命令加载到新表中并导致加载失败:
e.g。
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吗?
答案 0 :(得分:2)
据我所知,工作中有两个错误部分。有一个错误结果,这就是你现在看到的。还有第二个,应该是一个错误流。第二个很重要,因为你可能会有错误,但实际的工作可能会成功。
您也可以在BQ工具上设置--max_bad_records=3
。点击此处查看更多参数https://developers.google.com/bigquery/bq-command-line-tool
您可能每行都有一个错误,因此您应首先尝试使用此大文件中的示例集。
还有一个开放功能请求可以改进错误消息,您可以为此票证加注星(投票)https://code.google.com/p/google-bigquery-tools/issues/detail?id=13
这个答案将由BQ团队选择,所以对于他们我分享:我们需要一个端点,我们可以根据jobid,状态或错误流进行查询。获得完整的错误列表会有很大帮助,这有助于调试BQ作业。这可能很容易实现。
答案 1 :(得分:1)
我在BigQuery日志中查找了这个工作,不幸的是,在阅读了大约930 MB后,没有任何信息比“无法读取”更多信息。
我提交了一个错误,我们在一个代码路径中删除了重要的错误信息并提交了修复程序。但是,这个修复程序要到下周才会生效,所有这一切都会给我们提供更多的诊断信息。
由于这是可重复的,因此不太可能是从GCS读取的瞬态错误。这意味着两个问题之一:我们在解码.gz文件时遇到问题,或者该特定GCS对象出现了问题。
对于第一个问题,您可以尝试解压缩文件并将其重新上传为未压缩文件。虽然通过网络发送千兆字节数据可能听起来很痛苦,但好消息是导入会更快,因为它可以并行完成(我们无法并行导入压缩文件,因为它只能被读取顺序)。
对于第二个问题(不太可能),您可以尝试自己下载文件以确保不会出错,或者尝试重新上传相同的文件,看看是否有效。