将DynamoDB文档类型导出为Redshift

时间:2016-08-11 18:21:25

标签: amazon-web-services amazon-dynamodb amazon-redshift

我有一个DynamoDB表,其中包含一些Document Typeslistmap属性,具体而言。

我正在尝试将这些表导出到Redshift中。 According to the documentation,如果您尝试从包含copylist属性的DynamoDB表中复制数据,则Redshift map命令将失败:

  

仅支持标量为STRING和NUMBER数据类型的Amazon DynamoDB属性。不支持Amazon DynamoDB BINARY和SET数据类型。如果COPY命令尝试加载具有不受支持的数据类型的属性,则该命令将失败。

我还调查过使用数据管道和Hive,但the documentation表明Hive也不支持listmap

将数据移出DynamoDB有哪些选项 - 包括listmap属性 - 还有Redshift?

1 个答案:

答案 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 optionscommandOptions

"commandOptions": "JSON 's3://richard.jp.leguen/data-pipeline/misc/jsonpaths.txt'"