【问题标题】:Internal Error while loading Bigquery table加载 Bigquery 表时出现内部错误
【发布时间】:2026-01-01 08:45:01
【问题描述】:

使用 bq load --source_format=NEWLINE_DELIMITED_JSON 加载具有 1000 万条记录的 1.3Gb json 文件时出现此类错误

如果我只将前 100 万条记录放入一个单独的文件中,它可以正常加载,但是当我尝试在整个文件上运行时,我会得到:

当前状态:待处理
在加载操作中等待 bqjob_r6ac3e4 BigQuery 错误:错误 处理作业 '我的项目产品:bqjob_r6ac3e4da72b48e4f_000001528037b394_1':太多 遇到的错误。限制为:0。失败详情: - 文件:0:发生内部错误,请求无法完成。

我已经能够加载其他大表,但是当我去加载这个时总是得到这个错误。除了将文件分成越来越小的部分以尝试找到有问题的行之外,还有其他方法可以解决此问题吗?

(类似于Internal error while loading to Bigquery table

【问题讨论】:

  • 你后来试过了吗?您是否尝试过在该位置使用一个小文件,可能由于某种原因无法访问该存储桶中的文件?
  • 是的,是的。这似乎不是一个暂时的问题。即使是这样,如果有更多信息丰富的错误消息,或者我可以运行一些工具来验证我的输入文件,那就太好了。

标签: google-bigquery


【解决方案1】:

查看我们关于您的工作 bqjob_r6ac3e4da72b48e4f_000001528037b394_1 的日志,似乎我们无法读取第一个文件(可能还有其他文件,但它抱怨第一个文件)。

文件被压缩了吗?过去,当文件压缩不正确时,我们也看到过类似的错误。

当然也可能是其他问题。但我现在没有足够的信息。如果您可以与我们分享另一个失败的作业 ID,将会很有帮助。如果这些导入作业始终与文件 0 一起失败,我可以帮助您检查我们的后端。谢谢!

【讨论】:

  • 非常感谢您的调查!我必须检查一下,但我敢打赌这是因为我使用的是 bgzip 而不是 gzip。
【解决方案2】:

如果您在 BigQuery 的网页界面中进行作业,它应该会显示前五个错误。这些可能有用,也可能没用。

此外,您可以将允许的最大不良记录数设置为一个非常高的数字(10,000,000)。这样,违规行将被跳过,您可以尝试通过检查结果来识别它们。 (在 Java api 中,这是方法 JobConfigurationLoad.setMaxBadRecords(int),如果您使用命令行,则为选项 --max_bad_records=int)。

【讨论】:

  • 谢谢!我会尝试增加最大坏记录。当我在 Web UI 中查看作业时,我现在看到的只是错误原因:无效。在故障排除错误中获取有关此错误的更多信息:无效。错误:发生内部错误,请求无法完成。遇到的错误太多。限制为:0。作业 ID:.... 开始时间:2016 年 1 月 26 日下午 6:45:51 结束时间:2016 年 1 月 26 日下午 6:46:22 目标表:...源 URI:已上传文件源格式:JSON(换行符分隔)架构:
  • 不走运。使用 --max_bad_records 1000000 会导致相同的错误消息,没有任何进一步的细节。
  • 所以现在它说“遇到太多错误。限制是 1000000”?尝试将其设置为大于文件中行数的数字(这就是我建议 10,000,000 的原因)。这样您就可以判断问题是否真的出在特定的行上。
【解决方案3】:

根据链接: https://cloud.google.com/bigquery/docs/loading-data#limitations

目前,当您将数据加载到 BigQuery 时,gzip 是唯一的 支持 CSV 和 JSON 文件的文件压缩类型。

正如您提到的,您正在尝试加载 bzip(它不是受支持的格式),您可能会收到错误消息。尝试解压缩文件并加载它,这可能会有所帮助。

【讨论】: