AWS:从dynamodb到redshift的数据转换

时间:2017-08-24 14:59:23

标签: amazon-web-services amazon-dynamodb amazon-redshift data-science

我每天都有一个日志表(每天大约10米输入)存储在DynamoDB中。

为了进行分析,我需要将其转移到Redshift中。此外,我需要通过解析字符串(nvarchar(250))从现有列中创建新列。我的想法是使用COPY命令并将数据从DynamoDB传输到Redshift,然后使用UDF创建新列。

这种方法的问题在于它需要花费大量时间才能完成(两个部分)并且它会一直失败(查询状态为ABORTED):我在一个复制命令中传输大约10天的数据。

您认为应该采用哪种更好的方法:使用数据管道或EMR等亚马逊服务?或做同样的事情,但组织方式不同?

2 个答案:

答案 0 :(得分:1)

我的设计建议不是将您的数据存储在dynamodb中。因为在执行复制命令时从成本角度来看,它会消耗您为dynamo db设置的最高吞吐量值。

不确定如何设置主键值以及为dynamodb设置的当前直通值。

为此,我的解决方案是将数据写入s3,并采用所需的redshift存储格式。从s3使用定期/一次性活动中的数据管道将数据处理到红移集群。

默认情况下,Aws数据管道使用EMR处理您的数据。

如果在存储数据之前需要更多清理,请考虑在EMR中使用Spark。

但在此之前你需要说。 10米记录大小的大小是多少,您可以选择采用我的建议,如写入s3。如果是,您需要通过考虑性能/成本优化过程进行设计。

如果您需要更多帮助,发表评论将提供我最好的建议。

答案 1 :(得分:0)

您可以使用AWS Glue设置ETL(提取转换加载)作业,将数据从DynamoDB移至Redshift。