【问题标题】:Load multiple folders containing several jsonl files into a Cloud Database in GCP (e.g.: BigQuery)将包含多个 jsonl 文件的多个文件夹加载到 GCP 中的云数据库中(例如:BigQuery)
【发布时间】:2021-03-14 20:12:24
【问题描述】:

数据

数据被格式化为多个文件夹中的多个 .jsonl.gz 文件,位于 Google Cloud Storage 存储桶中。

例如,我要加载的文件,如果我逐个文件加载数据文件将是这样的:

gs://my-bucket/folder1/something1-10.jsonl.gz
gs://my-bucket/folder1/something11-20.jsonl.gz
gs://my-bucket/folder1/something21-30.jsonl.gz
gs://my-bucket/folder2/something1-10.jsonl.gz
gs://my-bucket/folder2/something11-20.jsonl.gz
gs://my-bucket/folder2/something21-30.jsonl.gz

这些jsonl 文件内容与平常没有什么不同,这意味着它的内容类似于:

{"name": "Foo", "surname": "Loo"}
{"name": "Lauren", "surname": "Impsum"}
...

单个文件并不大,但将所有文件加起来,我有一个超过 500 GB 的大型数据集,这将很难加载到内存中,将其连接成单个文件并上传到云端.

BigQuery

​​>

看起来像BigQuery allows users to upload data from jsonl files,它们是否被压缩。然而,它似乎不支持读取多个文件,也不支持多个文件夹。

其他工具

我不限于使用 BigQuery,但我受限于使用 GCP(即使这代表创建 GKE 集群支持的数据库实例)。

有谁知道如何处理将这些数据加载到数据库中?

【问题讨论】:

    标签: database google-cloud-platform google-bigquery google-cloud-storage jsonlines


    【解决方案1】:

    bq command line supports loading a set of gzipped JSONL files 原生。

    您可以包含单个 URI、以逗号分隔的 URI 列表或 URI 包含通配符。

    试试命令

    bq load \
        --autodetect \
        --source_format=NEWLINE_DELIMITED_JSON \
        mydataset.mytable \
        gs://my-bucket/folder*
    

    【讨论】:

      【解决方案2】:

      您可以将 Cloud Workflows 用于此用例的 Google Cloud 产品。

      简而言之,工作流允许您将服务连接在一起,任何具有公共 API 的东西。集成任何 Google Cloud API、SaaS API 或私有 API。

      您需要在工作流程中定义以下步骤:

      • 使用 Cloud Storage API 从您的存储桶/文件夹中获取文件
      • 使用 BigQuery Load API 发送在第一步中获得的输入 sourceURI,将第 2 步中的段组合成您的目标名称格式

      我有一篇关于 CSV 文件的完整博客文章,但可以快速更改为 JSON 类型导入:Using Cloud Workflows to load Cloud Storage files into BigQuery

      【讨论】:

        猜你喜欢
        • 2019-02-16
        • 2021-11-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-07-27
        • 1970-01-01
        • 2014-05-29
        • 1970-01-01
        相关资源
        最近更新 更多