使用通配符将大文件从BigQuery导出到Google云

时间:2018-07-18 15:16:57

标签: google-bigquery google-cloud-storage

我在BigQuery中有8Gb表,我正尝试将其导出到Google Cloud Storage(GCS)。如果我照原样指定网址,则会收到错误消息

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?我错了吗?还是我做错了什么?

P.S。我在WebUI模式以及Java库中都尝试过。

2 个答案:

答案 0 :(得分:2)

对于某些大小或更大的文件,BigQuery将导出到多个GCS文件-这就是为什么它要求输入“ *” glob的原因。

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

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

答案 1 :(得分:0)

要将其导出到GCP,您必须转到表格,然后点击导出>导出到GCS。

BigQuery export table

这将打开以下屏幕

Export to GCS

选择GCS位置中,定义存储区,文件夹和文件。

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

daria_bucket/test.csv

由于文件太大,因此出现错误。要修复它,您必须使用通配符将其分解为更多文件。因此,您需要添加*,就像这样

daria_bucket/test*.csv

Wildcard export to GCS

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

在我的情况下(问了问题一年多之后),使用了一个随机表(1.25 GB),得到了16个文件,每个文件的80,3 MB。