如何限制从 bigquery 导出到 gcs 的文件大小?

Posted

技术标签:

【中文标题】如何限制从 bigquery 导出到 gcs 的文件大小?【英文标题】:how to limit the size of the file that exporting from bigquery to gcs? 【发布时间】:2017-05-22 15:46:29 【问题描述】:

我使用python代码将数据从bigquery导出到gcs,然后使用gsutil导出到s3!但是导出到gcs后,我注意到有些文件超过5 GB,gsutil无法处理?所以我想要知道限制大小的方法

【问题讨论】:

我已经填写了一份错误报告以使用相关信息更新文档。这里有问题,可能内部压缩大小为 1GB,但导出平面结果时为 5GB,但这应该得到官方确认issuetracker.google.com/issues/111569287 【参考方案1】:

尝试使用单个通配符 URI

请参阅Exporting data into one or more files 的文档

如果您认为导出的数据将是 大于 BigQuery 的 1 GB 每个文件的最大值。 BigQuery 分片 根据提供的模式将您的数据放入多个文件中。如果你 在文件名以外的 URI 组件中使用通配符,请确保 导出数据之前路径组件不存在。

属性定义:

['gs://[YOUR_BUCKET]/file-name-*.json']

创建:

gs://my-bucket/file-name-000000000000.json gs://my-bucket/file-name-000000000001.json gs://my-bucket/file-name-000000000002.json ...

属性定义:

['gs://[YOUR_BUCKET]/path-component-*/file-name.json']

创建:

gs://my-bucket/path-component-000000000000/file-name.json gs://my-bucket/path-component-000000000001/file-name.json gs://my-bucket/path-component-000000000002/file-name.json

【讨论】:

嗨,米哈伊尔,当我使用通配符时,gcs 会创建 14 个文件,其中大多数大于 5GB..另外我使用了多个通配符 uri,对于一种模式,gcs 会创建 2 个文件,一个文件6GB和其他0B 我认为 1GB 是根据 bigquery 表中的压缩大小计算的。你试过压缩吗?顺便说一句,您是导出 CSV 还是 JSON? JSON 格式过于冗长 - 可能是大尺寸的另一个原因 是的,我导出为json,从我的角度来看,1gb可能是不包括架构的数据长度......我担心一些文件被压缩后,其中一些也可能是大于 5Gb【参考方案2】:

所以在问题跟踪器之后,正确的做法是。

    单个 URI ['gs://[YOUR_BUCKET]/file-name.json']

如果您希望 BigQuery 将数据导出到单个 URI,请使用单个 URI 文件。使用此方法导出的最大数据为 1 GB。

请注意,数据大小最大为 1GB,1GB 不用于导出的文件大小。

    单个通配符URI ['gs://[YOUR_BUCKET]/file-name-*.json']

如果您认为导出的数据集将是 大于 1 GB。 BigQuery 将您的数据分片到多个文件中 在提供的模式上。导出的文件大小可能会有所不同,并且文件不会 大小相同。

因此,当您的数据大小超过 1 GB 时,您需要再次使用此方法,并且生成的文件大小可能会有所不同,并且可能会超过 1 GB,正如您提到的那样,此方法会发生 5GB 和 160Mb 对。

    多个通配符 URI

    ['gs://my-bucket/file-name-1-*.json', 'gs://my-bucket/file-name-2-*.json', 'gs://my-bucket/file-name-3-*.json']

如果要对导出输出进行分区,请使用多个通配符 URI。 如果您正在运行并行处理作业,您将使用此选项 使用 Google Cloud Platform 上的 Hadoop 等服务。确定如何 许多工作人员可用于处理工作,并为每个工作人员创建一个 URI 工人。 BigQuery 将每个 URI 位置视为一个分区,并使用 并行处理将您的数据分片到每个文件中的多个文件中 位置。

这同样适用于此处,导出的文件大小可能会超过 1 GB。

【讨论】:

以上是关于如何限制从 bigquery 导出到 gcs 的文件大小?的主要内容,如果未能解决你的问题,请参考以下文章

Bigquery 在文件大小为 8GB 的​​ GCS 中导出表,即使使用单个通配符 URI 将表导出到小于 1 gb 的文件块中

如何将 GCS 中的 csv 随机样本导出到 BigQuery

如何将 Google Analytics 数据导出到 Google GCS 存储桶或 BigQuery?

在加入并将它们导出到 GCS 之前,如何等待 BigQuery 上的异步表写入?

BigQuery:导出表未在 GCS 中将 Content-Encoding 设置为 gzip

将 XLS 文件从 GCS 导入 BigQuery