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

时间:2017-05-22 15:46:30

标签: google-bigquery google-cloud-storage

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

2 个答案:

答案 0 :(得分:0)

尝试使用单个通配符URI

请参阅Exporting data into one or more files

的文档
  

如果您认为导出的数据是,请使用单个通配符URI   每个文件的最大值大于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

答案 1 :(得分:0)

因此,在问题跟踪器之后,采取此方法的正确方法是。

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

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

请注意,数据大小最大为1GB,而1GB则不是导出的文件大小。

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

如果您认为导出的数据集将是一个通配符URI,请使用   大于1 GB。 BigQuery会将您的数据分成多个文件   在提供的模式上。导出的文件大小可能会有所不同,并且文件不会   大小相等。

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

  1. 多个通配符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。