0

我正在尝试使用控制台中的以下命令将表从 BigQuery 导出到谷歌存储:

bq --location=<hidden> extract --destination_format CSV --compression GZIP --field_delimiter "|" --print_header=true <project>:<dataset>.<table> gs://<airflow_bucket>/data/zip/20200706_<hidden_name>.gzip

我收到以下错误:

提取操作中的 BigQuery 错误:发生内部错误,请求无法完成。

这是有关该表的一些信息

Table ID    <HIDDEN> 
Table size 6,18 GB
Number of rows   25 854 282 
Created 18.06.2020, 15:26:10 
Table expiration     Never 
Last modified 14.07.2020, 17:35:25 
Data location    EU

我在这里要做的是将这张表提取到谷歌存储中。由于该表大于 1 Gb,因此它会变得支离破碎......我想将所有这些片段组合到一个存档中,进入一个谷歌云存储桶。

这里发生了什么?我该如何解决?

注意:我已经隐藏了表格的实际名称和位置以及其他信息与提及 <hidden><airflow_bucket>或`:。


`

4

2 回答 2

1

我发现了这背后的原因,文档给出了以下语法bq extract

> bq --location=location extract \
> --destination_format format \
> --compression compression_type \
> --field_delimiter delimiter \
> --print_header=boolean \ project_id:dataset.table \ gs://bucket/filename.ext

我删除location=<bq_table_location>了它,它在原则上有效。除了我必须添加一个通配符,我最终有多个压缩文件。

于 2020-07-14T16:53:27.637 回答
1

根据公共文档,由于 1 Gb 文件大小限制,您会收到错误消息。

目前,如果不添加额外步骤(例如在 Cloud Storage 上进行连接或在Dataflow上使用批处理作业),则无法完成您想要的操作。

有一些Google 提供的批处理模板可以将数据从 BigQuery 导出到 GCS,但没有一个是 CSV 格式的,因此您需要触摸一些代码才能在 Dataflow 上执行此操作。

于 2020-07-15T15:29:44.087 回答