将有效负载数据从 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