【问题标题】:BigQuery script failing for large file大文件的 BigQuery 脚本失败
【发布时间】:2016-12-30 07:22:58
【问题描述】:

我正在尝试使用以下脚本将 json 文件加载到 GoogleBigquery https://github.com/GoogleCloudPlatform/python-docs-samples/blob/master/bigquery/api/load_data_by_post.py 几乎没有修改。 我加了

,chunksize=10*1024*1024, resumable=True))

MediaFileUpload

该脚本适用于包含几百万条记录的示例文件。实际文件大约 140 GB,包含大约 200,000,000 条记录。 insert_request.execute() 总是以

失败
socket.error: `[Errno 32] Broken pipe` 

半小时左右后。如何解决这个问题?每行小于 1 KB,因此不应该是配额问题。

【问题讨论】:

  • 这里有同样的问题。 stackoverflow.com/questions/38971523/…
  • 修正格式和错别字
  • 您好 Jayadevan,我是 BigQuery 工程团队的一员,如果您想发布项目和工作 ID,我可以查看一下我们的日志中是否有任何突出的内容。跨度>

标签: python json google-bigquery


【解决方案1】:

在处理大文件时,不要使用流式传输,而是使用批量加载:流式传输可以轻松处理高达每秒 100,000 行的数据。这对于流式传输非常有用,但不适用于加载大文件。

链接的示例代码正在做正确的事情(批处理而不是流),所以我们看到的是一个不同的问题:此示例代码试图将所有这些数据直接加载到 BigQuery,但通过 POST 部分上传失败。

解决方案:不要通过 POST 加载大块数据,而是先将它们暂存到 Google Cloud Storage 中,然后告诉 BigQuery 从 GCS 读取文件。

更新:与工程团队交谈,如果您尝试使用较小的 chunksize,POST 应该可以工作。

【讨论】:

  • 一些观察,以防它帮助某人。我不认为 chunksize 是问题。当我早些时候用只有 1000 万条记录进行试点测试时,我将它保持在 100 MB 并且它工作正常。使用新的完整数据文件,我收到了上面提到的错误。然后我切换到压缩格式并遇到配额问题。然后我将压缩文件分成块,它正在工作,但需要很多时间。下一步是将未压缩的文件分成块并尝试。感谢所有建议。
  • @Jayadevan 我也有同样类型的问题。对我来说 8.5mb csv 需要很多时间才能卡在这条线上。 github.com/GoogleCloudPlatform/python-docs-samples/blob/master/… 知道吗?您有工作代码的参考网址吗?
  • 你使用了 chunk_size 吗?我现在将 mediafileupload 放在 try/except 块中,以便再进行一次尝试。检查错误情况并具有特定的异常子句会更好。这就是我现在尝试代码的方式: job = insert_request.execute() except: job = insert_request.execute() 你说“卡住”。您是遇到错误还是挂起?
猜你喜欢
  • 1970-01-01
  • 2017-08-15
  • 2014-07-04
  • 1970-01-01
  • 2018-02-22
  • 1970-01-01
  • 2022-10-15
  • 2018-12-15
  • 2010-10-11
相关资源
最近更新 更多