从 N 个生产者到 1 个消费者的批处理

Batch processing from N producers to 1 consumer

我构建了一个分布式(基于 celery)解析器,每天处理大约 30K 个文件。每个文件(edi 个文件)被解析为 JSON 并保存在一个文件中。目标是填充 Big Query 数据集。

生成的 JSON 符合 Biq 查询模式,可以按原样加载到我们的数据集 (table)。 但是我们每天只能加载 1000 个作业。传入消息必须尽快加载到 BQ。

所以目标是:对于每条消息,由 celery 任务解析它,每个结果将缓冲在 300 项大小的(分布式)缓冲区中。当缓冲区达到限制时,所有数据(json 数据)将被聚合以推送到 Big Query 中。

我找到了 Celery Batch,但需要的是生产环境,但这是我找到的最接近开箱即用的解决方案。

注意:Rabbitmq 是消息代理,应用程序附带 docker。

谢谢,

使用流式插入,您的限制是 100.000 条/秒。

https://cloud.google.com/bigquery/streaming-data-into-bigquery