【问题标题】:Transfer large file from Google BigQuery to Google Cloud Storage将大文件从 Google BigQuery 传输到 Google Cloud Storage
【发布时间】:2014-09-18 07:03:31
【问题描述】:

我需要将 BigQuery 中的 2B 条记录的大表以 csv 格式传输到 Cloud Storage。我正在使用控制台进行传输。

由于文件的大小,我需要指定一个包含 * 的 uri 来对导出进行分片。我最终在 Cloud Storage 中有 400 个 csv 文件。每个都有一个标题行。

这使得合并文件非常耗时,因为我需要将 csv 文件下载到另一台机器,去掉标题行,合并文件,然后重新上传。 FY 合并后的 csv 文件大小约为 48GB。

有没有更好的方法?

【问题讨论】:

  • 这些 CSV 文件合并后如何处理?为什么上传前需要合并(为什么不能单独上传)?你真的需要标题,或者你可以在代码中假设列顺序?

标签: google-bigquery google-cloud-storage


【解决方案1】:

使用 API,您将能够告诉 BigQuery 在表格提取期间不要打印标题行。这是通过将configuration.extract.printHeader 选项设置为false 来完成的。请参阅the documentation 了解更多信息。命令行实用程序也应该能够做到这一点。

完成此操作后,连接文件就容易多了。在 Linux/Mac 计算机中,它将是一个 cat 命令。但是,您也可以尝试使用compose 操作直接从 Cloud Storage 连接。 See more details here。可以从 API 或命令行实用程序执行合成。

由于组合操作仅限于 32 个组件,因此您必须在 32 个文件之后组合 32 个文件。这应该对 400 个文件进行大约 13 次合成操作。请注意,我从未尝试过合成操作,所以我只是猜测这部分。

【讨论】:

    【解决方案2】:

    在控制台中,使用bq 实用程序去除标题:

    bq --skip_leading_rows 1
    

    【讨论】:

      猜你喜欢
      • 2018-06-20
      • 2021-04-25
      • 1970-01-01
      • 2018-04-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-04
      • 2023-04-08
      相关资源
      最近更新 更多