我有一个DynamoDB表,其中包含一些Document Types:list
和map
属性,具体而言。
我正在尝试将这些表导出到Redshift中。 According to the documentation,如果您尝试从包含copy
或list
属性的DynamoDB表中复制数据,则Redshift map
命令将失败:
仅支持标量为STRING和NUMBER数据类型的Amazon DynamoDB属性。不支持Amazon DynamoDB BINARY和SET数据类型。如果COPY命令尝试加载具有不受支持的数据类型的属性,则该命令将失败。
我还调查过使用数据管道和Hive,但the documentation表明Hive也不支持list
或map
。
将数据移出DynamoDB有哪些选项 - 包括list
和map
属性 - 还有Redshift?
答案 0 :(得分:0)
我采用的方法是从Export DynamoDB Table to S3模板开始。
org.apache.hadoop.dynamodb.tools.DynamoDbExport
中运行的EMRActivity
步骤似乎输出了专门用于RedshiftCopyActivity
的清单文件:http://docs.aws.amazon.com/redshift/latest/dg/loading-data-files-using-manifest.html
因此,除了“导出DynamoDB表到S3”模板附带的S3BackupLocation
数据节点之外,我还添加了另一个S3DataNode
{EM}活动dependsOn
。它指定manifestFilePath
,与directoryPath
数据节点中指定的S3BackupLocation
相同 - 除了/manifest
添加到最后。
然后将新数据节点 - manifestFilePath
- 用作RedshiftCopyActivity
的输入。为了展平作为地图的属性,RedshiftCopyActivity
指定了一些提供JSONPath options的commandOptions
:
"commandOptions": "JSON 's3://richard.jp.leguen/data-pipeline/misc/jsonpaths.txt'"