0

数据

数据被格式化为多个.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 允许用户从jsonl文件上传数据,无论它们是否被压缩。然而,它似乎不支持从多个文件中读取,也不支持从多个文件夹中读取。

其他工具

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

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

4

2 回答 2

0

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

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

您需要在 Workflow 中定义以下步骤:

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

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

于 2020-12-02T21:25:01.637 回答
0

bq命令行支持本地加载一组 gzip 压缩的 JSONL文件。

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

试试命令

bq load \
    --autodetect \
    --source_format=NEWLINE_DELIMITED_JSON \
    mydataset.mytable \
    gs://my-bucket/folder*
于 2020-12-02T20:26:39.980 回答