我遇到了同样的问题,我是这样处理的:
首先,启动一个 Google Compute Engine 虚拟机实例。
https://console.cloud.google.com/compute/instances
然后安装 gsutil 命令,然后进行身份验证过程。
https://cloud.google.com/storage/docs/gsutil_install
确认 gcloud、gsutil 和 bq 命令正常工作后,将磁盘快照保存为快照 1,然后删除此 VM。
在您的本地计算机上,运行此命令以创建新磁盘。此磁盘用于 VM,以便您有足够的空间下载和解压缩大文件。
gcloud compute disks create disk-2017-11-30 --source-snapshot snapshot-1 --size=100GB
再次在您的本地计算机上,运行此命令以创建一个使用此磁盘的新 VM 实例。我使用 --preemptible 标志来节省一些成本。
gcloud compute instances create loader-2017-11-30 --disk name=disk-2017-11-30,boot=yes --preemptible
现在您可以通过 SSH 连接到您的实例,然后在远程机器上运行这些命令。
首先,将文件从云存储复制到虚拟机
gsutil cp gs://my-bucket/2017/11/20171130.gz .
然后解压缩文件。就我而言,对于 ~4GB 文件,完成此步骤大约需要 17 分钟:
gunzip 20171130.gz
解压缩后,您可以运行 bq load 命令将其加载到 BigQuery 中,但我发现对于我的文件大小(解压缩后约为 70 GB),该操作大约需要 4 小时。相反,我将解压缩的文件上传回 Cloud Storage
gsutil cp 20171130 gs://am-alphahat-regional/unzipped/20171130.csv
现在文件已回到云存储中,您可以运行此命令来删除虚拟机。
gcloud compute instances delete loader-2017-11-30
理论上,关联的磁盘应该也被删除了,但是我发现磁盘还在,需要用一个额外的命令删除它
gcloud compute disks delete disk-2017-11-30
现在终于可以运行 bq load 命令或者从控制台加载数据了。