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

Posted

技术标签:

【中文标题】将有效负载数据从 dynamodb 复制到 redshift【英文标题】:copy payload data from dynamodb to redshift 【发布时间】:2017-02-02 14:56:30 【问题描述】:

AWS 的新手。

我想使用 COPY 命令将表从 dynamoDB 导入 Redshift。但是我出现了诸如“无效操作:不支持的数据类型:当前版本仅支持字符串和数字”之类的错误消息。或者我只能在某些列中有值,而其他列(更重要的一个,例如 paylaod 中的传感器值)为空。

在 dynamoDB 中,hashkey 和 rangekey 是 String,但是 payload 是 JSON 格式,我如何将这个 payload 复制到 Redshift? AWS 中的文档没有提供详细的解决方案。

【问题讨论】:

github.com/awslabs/lambda-streams-to-firehose 【参考方案1】:

COPY 命令可用于从具有标量数据类型(即 STRING 和 NUMBER) 的 DynamoDB 表中复制数据。

如果您在 DynamoDB 表中有任何具有不同数据类型(即 Map、List、Set 等)的属性,则 COPY 命令将失败(即目前不支持)。

仅具有标量 STRING 和 NUMBER 数据的 Amazon DynamoDB 属性 支持类型。 Amazon DynamoDB BINARY 和 SET 数据类型是 不支持。如果 COPY 命令尝试加载带有 不支持的数据类型,命令将失败。如果属性确实 与 Amazon Redshift 表列不匹配,COPY 不会尝试 加载它,它不会引发错误。

【讨论】:

感谢您的回复。在 AWS IoT 教程中,它建议开发人员将传感器数据作为 JSON 存储到 dynamoDB 的有效负载中,另外还有 hashkey 和 rangekey。那么也许将 dynamoDB 导出到 S3 是这种情况下唯一有效的解决方案? 是的,您可以使用 AWS 管道将数据导出到 S3。

以上是关于将有效负载数据从 dynamodb 复制到 redshift的主要内容,如果未能解决你的问题,请参考以下文章

如何使用IoT规则将数据从AWS IoT发送到AWS DynamoDB v2

将数据从 Amazon Redshift 迁移到 DynamoDB

从 DynamoDB 迁移到 Spanner/BigTable

将dynamoDB表复制到另一个没有S3的aws帐户

从 DynamoDB 流复制到 Kinesis Data Streams 时如何维护顺序并避免重复记录?

从 dynamodb 复制到 s3