【问题标题】:Backup DynamoDB Table with dynamic columns to S3将具有动态列的 DynamoDB 表备份到 S3
【发布时间】:2013-03-28 12:56:06
【问题描述】:

我已经阅读了其他几篇关于此的帖子,尤其是 question,其中 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 脚本而不会一切都失败。)

【问题讨论】:

  • 你试过使用那个脚本吗?您发布的第一行代码似乎考虑了变量列。 itemmap&lt;string, string&gt;,这意味着整行都放入了地图中。我没有看到任何暗示它必须具有固定列名的内容。

标签: amazon-web-services hive boto amazon-dynamodb amazon-emr


【解决方案1】:

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

经过大量搜索后,我设法在亚马逊的文档中找到了以下内容(强调我的):

创建引用存储在 Amazon DynamoDB 中的数据的 Hive 表。这类似于 前面的示例,只是您没有指定列映射。桌子 必须只有一列类型映射。如果您随后创建一个 EXTERNAL 在 Amazon S3 中的表中,您可以调用 INSERT OVERWRITE 命令从 Amazon DynamoDB 到 Amazon S3。您可以使用它来创建您的亚马逊档案 Amazon S3 中的 DynamoDB 数据。因为没有列映射,所以不能查询表 以这种方式导出。在不指定列映射的情况下导出数据是 在 Hive 0.8.1.5 或更高版本中可用,Amazon EMR AMI 2.2.3 及更高版本支持。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多