python - Google BigQuery : After changing folder structure in G Storage, 为什么创建 GBQ 表要慢得多?

标签 python google-bigquery google-cloud-storage

在 Google Storage 中,我的文件夹结构如下:

my_bucket---+--file_1.gz      # 1MB
            |
            +--file_2.gz      # 1MB
            |
            +--file_3.gz      # 1MB
            |
            +--file_5.gz      # 1MB
            |
            +-- ...

此文件夹结构包含 50,000 个文件。要使用 my_bucket 在 Google BigQuery 中创建新表需要花费几分钟时间。然后我想我应该将文件夹结构更改为:

my_bucket---+--all_files.gz      # 50 GB

现在,当我使用相同的流程来创建作业时,大约需要 2 小时。这是怎么回事?

我将其更改为此文件夹结构的原因是,我将每天上传到 my_bucket,并且我希望减少单个文件的数量,因此在上传到存储之前,我将合并所有 csv 文件合并为一个大 csv 文件,然后将其压缩为 gz 文件。当我完成上传并准备通过重新运行类似 this 的作业来创建表时.

最佳答案

不确定将所有文件合并为一个文件是否是将数据加载到 BigQuery 的好方法。正如您在 answer 中看到的那样根据 Mosha 的说法,BigQuery 不会并行读取压缩文件。

这可以解释为什么在您的情况下需要 2 小时才能完成作业。

不过,我想知道为什么 GCS 文件夹中存在多个文件会出现问题。由于它们都位于同一路径中,因此它的工作方式就像一个压缩文件,在同一文件夹内有几个较小的部分。

关于python - Google BigQuery : After changing folder structure in G Storage, 为什么创建 GBQ 表要慢得多?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45220226/

相关文章:

python - 正则表达式匹配除字符串以外的所有内容

python - MCMC 中的参数数量

google-bigquery - Dataflow Runner - 尝试刷新以获取初始 access_token

python - 如何选择 Google Cloud Storage 存储桶的存储类别和位置

node.js - 无法从 nodejs 上传到谷歌云或 firebase 存储桶

python - 在 python 中为 Hadoop Map Reduce 创建自定义可写键/值类型?

python - 将到期时间设置为 django 密码重置 token

php - Google BigQuery 与 PHP 集成

google-bigquery - 在 bigquery 中对 _PARTITIONTIME 使用子查询不会限制成本

javascript - Blob URL 上传到 firebase 存储