微批量加载到 Redshift - 一些实际问题

Posted

技术标签:

【中文标题】微批量加载到 Redshift - 一些实际问题【英文标题】:Microbatch loading into Redshift - Some practical questions 【发布时间】:2016-03-09 12:20:15 【问题描述】:

我们正在设计用于将数据微批量加载到 redshift 中的工作流程。基本上,我们通过 API 收到一系列请求。 API 将队列中的内容泵入稍后处理的队列中,每个项目都是 ETLd,最后保存到 S3 中的准备加载文件中。所以步骤是:

    客户端向 API 发送请求。 API 提取并转换为 JSON API 将 JSON 放入队列中 消费者从队列中取货 根据内容,它会在相关文件中写入请求(表示要加载内容的表)

我的问题是关于这个流程的协调。我们在什么时候将复制命令从 S3 触发到 Redshift?我的意思是这是一个持续的数据流,每个数据批次都是一分钟宽。是否有任何 AWS 工具可以为我们做这件事,或者我们应该自己编写。

谢谢

【问题讨论】:

【参考方案1】:

AWS Lambda 就是为这个用例而设计的。

或者,如果您的队列是 Kafka 队列,您可能会发现 secor (https://github.com/pinterest/secor) 很有用。它将队列数据转储到 s3 中,然后可以复制到 Redshirt。

如果您选择安全路线,Spotify 的 Luigi 或 AWS Data Pipeline 都是编排复制命令的好选择。

【讨论】:

【参考方案2】:

在过去,我已经写过几次类似的逻辑,这不是一件容易的事。那里有很多复杂性。您可以将这些文章用作architecture 的参考。

如今,您可能不想自己实现,而是查看Amazon Kinesis Firehose。它会为您处理 S3 逻辑和写入 Redshift。

【讨论】:

以上是关于微批量加载到 Redshift - 一些实际问题的主要内容,如果未能解决你的问题,请参考以下文章

使用 Avro 文件批量复制到 Amazon Redshift 中的异常处理

aws Glue / Redshift 的预过滤解决方案(在加载到 S3 之前)

Node-Redshift 是不是支持复制命令(查询)将数据从 S3 加载到 Redshift?

批量插入的 Redshift 查询队列使用情况

从 s3 复制到 redshift

如何将 JSON 文件加载到 Redshift 表的单个列