AWS:从 dynamodb 到 redshift 的数据转换 [关闭]

Posted

技术标签:

【中文标题】AWS:从 dynamodb 到 redshift 的数据转换 [关闭]【英文标题】:AWS: data transformation from dynamodb to redshift [closed] 【发布时间】:2017-08-24 14:59:23 【问题描述】:

我有一个存储在 DynamoDB 中的每日日志表(每天大约 1000 万个输入)。

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

这种方法的问题是它需要很长时间才能完成(两个部分)并且一直失败(查询状态已终止):我在一个复制命令中传输了大约 10 天的数据。

您认为应该采用什么更好的方法:使用一些 Amazon 服务,例如数据管道或 EMR?还是做同样的事情但组织方式不同?

【问题讨论】:

【参考方案1】:

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

不确定如何设置主键值以及为 dynamodb 设置的当前吞吐量值是多少。

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

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

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

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

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

【讨论】:

感谢您的回答!一个问题:您认为数据管道可用于在将数据从 dynamodb 传输到 s3 时创建新列,还是应该先传输数据然后转换(在 redshift 中)? 无数据管道不支持此功能。为什么你不能用你需要的数据编写 s3 文件?如果您想从 dynamo db 执行此操作。使用 aws 胶水或使用 dynamo db 流包装器并在 lambda 中处理记录并写入 s3(但从长期/成本/性能因素来看,我强烈反对这种解决方案) 据我所知,aws glue(我也想过)仅在一个地区可用:我们东部(弗吉尼亚北部),而我的数据在另一个地区.. .【参考方案2】:

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

【讨论】:

如何使用 Glue 实现这一点?如果我想将数据从 DynamoDb 移动到 s3 或 Redshift?

以上是关于AWS:从 dynamodb 到 redshift 的数据转换 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

AWS 数据管道 Dynamodb 到 Redshift

AWS Data Pipeline DynamoDB 到 S3 到 Redshift,包括 JsonPaths

将有效负载数据从 dynamodb 复制到 redshift

您如何将 DynamoDB Map/List 类型转换为通过 AWS Pipeline 到 Redshift?

带标签的 AWS S3、DynamoDB、Redshift?

Redshift COPY 命令与 AWS 数据管道 RedshiftCopyActivity