【问题标题】:Exporting large file from BigQuery to Google cloud using wildcard使用通配符将大文件从 BigQuery 导出到 Google 云
【发布时间】:2018-12-26 14:02:17
【问题描述】:

我正在尝试将 BigQuery 中的 8Gb 表导出到 Google Cloud Storage (GCS)。如果我按原样指定 url,则会出现错误

Errors:
Table gs://***.large_file.json too large to be exported to a single file. Specify a uri including a * to shard export. See 'Exporting data into one or more files' in https://cloud.google.com/bigquery/docs/exporting-data. (error code: invalid)

好的...我在文件名中指定 *,但它会将其导出为 2 个文件:一个 7.13Gb 和一个 ~150Mb。

UPD。我想我应该得到大约 8 个文件,每个 1Gb?我错了吗?还是我做错了什么?

附:我在 WebUI 模式以及使用 Java 库中尝试过。

【问题讨论】:

  • 有什么问题吗?当您在 GCS 路径中指定 * 时,您将获得多个文件。这就是特点。如果您需要 1 个单件,您可以获取并进一步加入该文件。
  • 您已将表作为两个文件导出到 GCS - 那么为什么您认为自己做错了什么?
  • 我已经填写了一份错误报告以使用相关信息更新文档。这里有问题,可能内部压缩大小为 1GB,但导出平面结果时为 7GB,但这应该得到官方确认issuetracker.google.com/issues/111569287
  • @Pentium10 老实说,我对此感到有些不安。能够将小文件分开而不是一个大文件是非常好的功能。
  • 请将此作为功能请求发布,它可以转到同一张票

标签: google-bigquery google-cloud-storage


【解决方案1】:

对于特定大小或更大的文件,BigQuery 将导出到多个 GCS 文件 - 这就是它要求“*”glob 的原因。

一旦您在 GCS 中有多个文件,您可以使用 compose 操作将它们合并为 1:

gsutil compose gs://bucket/obj1 [gs://bucket/obj2 ...] gs://bucket/composite

【讨论】:

  • 抱歉,我没有提到我面临的主要问题。我以为我会有多个文件,每个文件 1Gb
【解决方案2】:

要将其导出到 GCP,您必须转到表并单击导出 > 导出到 GCS。

这将打开以下屏幕

选择 GCS 位置中,您可以定义存储桶、文件夹和文件。

例如,您有一个名为 daria_bucket 的存储桶(只能使用小写字母、数字、连字符 (-) 和下划线 (_)。点 (.) 可用于形成一个有效的域名。)并希望将文件保存在存储桶的根目录中,名称为 test,然后你写(在选择 GCS 位置)

daria_bucket/test.csv

由于文件太大,您会遇到错误。要修复它,您必须使用通配符将其分解为更多文件。所以,你需要添加 *,就像那样

daria_bucket/test*.csv

这将在存储桶 daria_bucket 中将从表中提取的所有数据存储在多个名为 test000000000000, test000000000001, test000000000002, ... testX 的文件中。

就我而言(在您提出问题后 1 年多),使用 1.25 GB 的随机表,得到 16 个文件,每个文件 80.3 MB。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-01-04
    • 2014-09-18
    • 2023-04-10
    • 1970-01-01
    • 2016-07-27
    • 2023-03-26
    • 2023-03-19
    相关资源
    最近更新 更多