AWS 数据管道 Dynamodb 到 Redshift

Posted

技术标签:

【中文标题】AWS 数据管道 Dynamodb 到 Redshift【英文标题】:AWS Data Pipeline Dynamo to Redshift 【发布时间】:2020-12-07 21:05:41 【问题描述】:

我有一个问题: 我需要将数据从 DynamoDB 迁移到 Redshift。问题是我收到这样的异常:

错误:不支持的数据类型:当前版本仅支持字符串和数字详细信息:-------------------------------- --------------- 错误:不支持的数据类型:当前版本仅支持字符串和数字代码:9005 上下文:表名 = user_session 查询:446027 位置:copy_dynamodb_scanner.cpp:199 进程:query0_124_446027 [pid=25424] --------------------------------------------------------- --

在我的 Dynamo 项目中,我有布尔字段。如何将字段从布尔值修改为 INT(例如)? 我尝试用作 VARCHAR(5),但没有帮助(所以它在 Github 中的一张票没有响应)

如有任何建议,我们将不胜感激。

【问题讨论】:

【参考方案1】:

作为解决方案,我先将数据从 DynamoDB 迁移到 S3,然后再迁移到 Redshift。

    我在 DynamoDB 中使用了 Exports to S3 内置功能。它将所有数据作为 *.json 文件保存到 S3 中非常快(但未排序)。 之后我使用 ETL 脚本,使用 Glue Job 和带有 pyspark 的自定义脚本来处理数据并将其保存到 Redshift。

也可以使用 Glue 爬虫来定义架构,但仍需要验证其结果,因为有时它不正确。

如果您不使用 ONDEMAND 读/写,则使用爬虫直接解析 DynamoDB 会过度使用您的表。因此,更好的方法是使用来自 S3 的数据。

【讨论】:

以上是关于AWS 数据管道 Dynamodb 到 Redshift的主要内容,如果未能解决你的问题,请参考以下文章

如何将 AWS DynamoDB 表导出到 S3 存储桶?

使用 AWS Datapipeline 将 DynamoDB 导出到 S3 数据

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

AWS DataPipeline表示未找到DynamoDB表

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

Redshift COPY 命令与 AWS 数据管道 RedshiftCopyActivity