-1

我有一个存储在DynamoDB中的每日日志表(每天大约有10m输入)。AWS:从dynamodb到红移的数据转换

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

这种方法的问题是,它需要花费很多时间来完成(这两个部分),并且它保持失败(查询的状态为ABORTED):我在一个复制命令中传输大约10天的数据。

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

回答

1

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

不知道你如何设置主键值,以及你为dynamodb设置的当前通过put值。

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

Aws数据管道默认使用EMR来处理数据。

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

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

如果您需要更多帮助,发表评论将有助于我的最佳建议。

+0

谢谢你的回答!一个问题:您认为数据管道可用于创建新列,同时将数据从dynamodb传输到S3,或者应该先传输数据然后再转换(以红移方式)? –

+0

没有数据管道不支持此功能。为什么你不能用你需要的数据写s3文件?如果你想从dynamo db中完成。去aws胶水或使用发电机数据流包装和处理lambda的记录和写入s3(但我强烈不同意这种解决方案的长期/成本/性能因素) –

+0

据我所见,aws胶水(我想过它也是)只在一个地区有效:us east(n。virginia)和我的数据在另一个地区...... –

0

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