繁体   English   中英

将具有动态列的DynamoDB表备份到S3

[英]Backup DynamoDB Table with dynamic columns to S3

我已经阅读了有关此问题的其他几篇文章,特别是关于这个问题的文章,其中有greg给出的关于如何在Hive中进行操作的答案。 我想知道如何用可变数量的列说明DynamoDB表吗?

也就是说,原始DynamoDB表具有使用不同列动态添加的行。 我试图查看Amazon在其DataPipeLine服务中使用的exportDynamoDBToS3脚本,但是它具有类似于以下代码的代码,该代码似乎无法映射列:

-- Map DynamoDB Table
CREATE EXTERNAL TABLE dynamodb_table (item map<string,string>)
STORED BY 'org.apache.hadoop.hive.dynamodb.DynamoDBStorageHandler'
TBLPROPERTIES ("dynamodb.table.name" = "MyTable");

(顺便说一句,我也尝试过使用Datapipe系统,但发现它相当令人沮丧,因为我无法从文档中找出如何执行简单的任务,例如运行shell脚本而不会失败。)

事实证明,我在原始问题中发布的Hive脚本可以正常工作,但前提是您使用的是正确版本的Hive。 似乎即使将install-hive命令设置为安装最新版本,使用的版本实际上仍取决于AMI版本。

经过一番搜索之后,我设法在亚马逊的文档中找到了以下内容(重点是我的):

创建引用引用存储在Amazon DynamoDB中的数据的Hive表。 这与前面的示例相似,不同之处在于您没有指定列映射。 该表必须只有一列类型映射。 如果然后在Amazon S3中创建EXTERNAL表,则可以调用INSERT OVERWRITE命令将数据从Amazon DynamoDB写入Amazon S3。 您可以使用它在Amazon S3中创建Amazon DynamoDB数据的档案。 由于没有列映射,因此无法查询以这种方式导出的表。 Hive 0.8.1.5或更高版本提供了在不指定列映射的情况下导出数据的功能, Amazon EMR AMI 2.2.3和更高版本支持该功能。

http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/EMR_Hive_Commands.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM