从Amazon DynamoDB加载数据到Redshift

8
我们在生产中有一个 DynamoDB 表,该表正在不断更新,我们希望将所有记录从 DynamoDB 加载到 Redshift。
我们尝试使用复制命令,但由于新记录不断被插入到表中,复制命令会一直运行。
我们想知道从实时 DynamoDB 加载数据到 Redshift 的最佳方式是什么。
2个回答

8
考虑研究基于DynamoDB Streams的解决方案。Streams提供了每个DynamoDB分区上正在发生的数据平面事件的有序日志(因此每个主键的事件是绝对有序的)。您可以使用Kinesis Client LibraryDynamoDB Streams Kinesis Adapter来处理流以将其转换为Redshift。
DynamoDB Streams目前处于预览阶段,但应很快普遍可用。

3
你可以使用以下模式:
DynamoDB Streams -> AWS Lambda -> Amazon Kinesis Firehose -> Amazon Redshift。
来自AWS文章DynamoDB Streams Use Cases and Design Patterns的图表。
请参见此处的答案,AWS DynamoDB Stream into Redshift
DynamoDB流实际上与Kinesis数据流相同,但它是由DynamoDB中的新/更改数据自动生成的。这使得应用程序在向DynamoDB表添加新数据或更改数据时可以收到通知。
Kinesis Data Firehose可以自动将流输出到Redshift(以及其他目标)。
AWS Lambda可以运行代码而无需提供或管理服务器。您只需要支付您消耗的计算时间 - 当您的代码未运行时不会收费。您可以为几乎任何类型的应用程序或后端服务运行代码 - 所有这些都没有管理。
Lambda对于检查通过流传输的数据非常有用。例如,它可以用于操作数据格式或跳过不需要的数据。
将所有内容放在一起,您可以在DynamoDB中添加/修改数据。这将导致发送包含更改信息的DynamoDB流。 AWS Lambda函数可以检查数据并操作/丢弃消息。然后,它可以将数据转发到Kinesis Data Firehose以自动将数据插入Amazon Redshift。

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接