微批量加载到 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 之前)