如何将 .gz 文件上传到 Google Big Query?

Posted

技术标签:

【中文标题】如何将 .gz 文件上传到 Google Big Query?【英文标题】:How to upload .gz files into Google Big Query? 【发布时间】:2017-06-22 15:27:35 【问题描述】:

我想在本地计算机上创建一个 90 GB .csv 文件,然后上传到 Google BigQuery 进行分析。我通过将数千个较小的.csv 文件组合成 10 个中等大小的文件来创建这个文件,然后将这些中等大小的文件组合成 90 GB 的文件,然后我想将其移动到 GBQ。我在这个项目上苦苦挣扎,因为我的电脑一直因内存问题而崩溃。从this视频我了解到我应该先将中等大小的.csv文件(每个大约9 GB)转换成.gz文件(每个大约500MB),然后将这些.gz文件上传到Google Cloud Storage。接下来,我将创建一个空表(在 Google BigQuery / Datasets 中),然后将所有这些文件附加到创建的表中。我遇到的问题是找到某种关于如何执行此操作的教程或有关如何执行此操作的文档。我是 Google 平台的新手,所以也许这是一项非常简单的工作,只需单击某处即可完成,但我所能找到的只是我上面链接的视频。我在哪里可以找到有关人们如何做到这一点的帮助或文档或教程或视频?我对工作流程有正确的想法吗?有没有更好的方法(比如使用一些可下载的 GUI 来上传东西)?

【问题讨论】:

您不需要将文件合并为一个大文件。只需创建数据集和表并使用 python、java、ruby 或 go 处理每个文件(或一组文件)并将它们加载到 bigquery。我最近用 python 做了类似的事情。如果您需要底漆,请告诉我。 @Abdou 概述您正在讨论的内容对我认为的这个问题会有所帮助。从给定的答案尚不清楚如何将 gz 文件从谷歌存储加载到 bigquery 【参考方案1】:

请参阅此处的说明: https://cloud.google.com/bigquery/bq-command-line-tool#creatingtablefromfile

正如 Abdou 在评论中提到的,您无需提前将它们组合在一起。只需压缩所有小的 CSV 文件,将它们上传到 GCS 存储桶,然后使用“bq.py load”命令创建一个新表。请注意,您可以使用通配符语法来避免列出要加载的所有单个文件名。

--autodetect 标志可以让您避免手动指定架构,尽管这依赖于从您的输入中采样,并且如果在某些情况下无法检测到,则可能需要更正。

【讨论】:

该页面在哪里专门引用了 gz 文件? 未特别提及,但允许未压缩或压缩数据。有一些折衷——压缩数据显然使用更少的存储空间(和传输带宽),但不能并行读取单个文件的某些部分。这个页面(从上面的一个链接)有更多的信息:cloud.google.com/bigquery/docs/…

以上是关于如何将 .gz 文件上传到 Google Big Query?的主要内容,如果未能解决你的问题,请参考以下文章

将存储在 Google Cloud Storage 中的文件加载到 Big Query 时出错

将数据流从 Google Cloud Storage 流式传输到 Big Query

如何在每次上传桶时更新Big Query后端数据

Google BigQuery:将 ExecuteQuery 结果以 json 格式上传到 Google Cloud Storage

使用 Google Cloud Datalab 时如何将 .gz 文件加载到 BigQuery?

如何将 Google Cloud SQL 与 Google Big Query 集成