Python 使用多个通配符URI提取到GS的BigQuery将提供空blob

Python 使用多个通配符URI提取到GS的BigQuery将提供空blob,python,google-cloud-platform,google-bigquery,cloud,distributed-computing,Python,Google Cloud Platform,Google Bigquery,Cloud,Distributed Computing,我试图使用Python中的google.cloud.storage.Client方法extract\u table从BigQuery中提取一个表,方法是在destination\u uri中指定一个多个通配符uri数组作为参数 destination_uri=['gs://{}/{}/{}-*'.format(bucket_name, prefix, i) for i in range(nb_node)] 预期的行为是BigQuery将我的表均匀地分割成多个blob 压缩后的文件大小为242

我试图使用Python中的
google.cloud.storage.Client
方法
extract\u table
从BigQuery中提取一个表,方法是在
destination\u uri
中指定一个多个通配符uri数组作为参数

destination_uri=['gs://{}/{}/{}-*'.format(bucket_name, prefix, i) for i in range(nb_node)]
预期的行为是BigQuery将我的表均匀地分割成多个blob

压缩后的文件大小为242 MB

真正发生的事情是,如果我给出7个URI,将使1个242MB的文件和6个20B的其他文件变为空

其他配置参数是:
destination\u format=“NEWLINE\u DELIMITED\u JSON”和compression=“GZIP”

关于为什么会发生这种情况有什么线索吗

非常感谢。

没有“均匀”分配的概念

导出文件可能是零星的,一个可能是几GB,另一个可能是几MB

这是根据我们的经验描述的:

如果导出的数据超过1 GB,则必须导出数据 复制到多个文件。将数据导出到多个文件时 文件大小会有所不同

没有“均匀”分布的概念

导出文件可能是零星的,一个可能是几GB,另一个可能是几MB

这是根据我们的经验描述的:

如果导出的数据超过1 GB,则必须导出数据 复制到多个文件。将数据导出到多个文件时 文件大小会有所不同


简单,如果您希望提取内容被均匀地切分,请在您的BQ表中使用分区。

简单,如果您希望提取内容被均匀地切分,请在您的BQ表中使用分区。

您是依靠GCP文档中的来源还是依靠经验?你能阐述一下你的观点吗,因为我无法想象在不控制文件大小的情况下提取到存储桶。我添加了文档,它也有文档记录。他们说如果你的
数据>1GB
你必须导出多个文件,这是非常重要的。但它并没有告诉你它将被导出的大小,经验是这是非常繁忙的,你可以得到各种大小的块,甚至是8-10 GBs这样的大块。我同意对文档的解释,但在其他情况下,我会在另一张表中得到大小相同的块。有没有办法确定是什么原因导致BigQuery将所有数据放在一个blob中,还是将所有数据均匀地分在一个blob的表碎片中?您是依靠GCP文档中的数据源还是依靠经验?你能阐述一下你的观点吗,因为我无法想象在不控制文件大小的情况下提取到存储桶。我添加了文档,它也有文档记录。他们说如果你的
数据>1GB
你必须导出多个文件,这是非常重要的。但它并没有告诉你它将被导出的大小,经验是这是非常繁忙的,你可以得到各种大小的块,甚至是8-10 GBs这样的大块。我同意对文档的解释,但在其他情况下,我会在另一张表中得到大小相同的块。有没有一种方法可以确定是什么导致BigQuery将所有数据放在一个blob中,还是放在表碎片的均匀分布的blob中?