Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 将带有动态列的DynamoDB表备份到S3_Amazon Web Services_Hive_Boto_Amazon Dynamodb_Amazon Emr - Fatal编程技术网

Amazon web services 将带有动态列的DynamoDB表备份到S3

Amazon web services 将带有动态列的DynamoDB表备份到S3,amazon-web-services,hive,boto,amazon-dynamodb,amazon-emr,Amazon Web Services,Hive,Boto,Amazon Dynamodb,Amazon Emr,我已经阅读了其他几篇关于这方面的文章,特别是greg关于如何在Hive中实现这一点的回答。不过,我想知道如何解释列数可变的DynamoDB表 也就是说,原始DynamoDB表中有使用不同列动态添加的行。我曾尝试查看Amazon在其DataPipeLine服务中使用的exportDynamoDBToS3脚本,但其代码如下所示,似乎没有映射列: -- Map DynamoDB Table CREATE EXTERNAL TABLE dynamodb_table (item map<string

我已经阅读了其他几篇关于这方面的文章,特别是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");
——映射DynamoDB表
创建外部表dynamodb_表(项目映射)
由“org.apache.hadoop.hive.dynamodb.DynamoDBStorageHandler”存储
TBLProperty(“dynamodb.table.name”=“MyTable”);

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

事实证明,我在原始问题中发布的配置单元脚本工作正常,但前提是您使用的配置单元版本正确。似乎即使将install-hive命令设置为安装最新版本,所使用的版本实际上也依赖于AMI版本

经过一段时间的搜索,我终于在亚马逊的文档中找到了以下内容(我的重点):

创建一个配置单元表,该表引用存储在Amazon DynamoDB中的数据。这类似于 上一个示例,但您没有指定列映射。桌子 必须正好有一列映射类型。如果然后创建一个外部 在AmazonS3中,您可以调用insertoverwrite命令从中写入数据 AmazonDynamodB到AmazonS3。您可以使用它来创建亚马逊的存档 AmazonS3中的DynamoDB数据。因为没有列映射,所以不能查询表 以这种方式导出的。在不指定列映射的情况下导出数据是不正确的 在Hive 0.8.1.5或更高版本中提供,该版本在Amazon EMR AMI 2.2.3及更高版本中受支持


您是否尝试过使用该脚本?您发布的第一行代码似乎说明了变量列<代码>项是一个
映射
,意味着整行被放入一个映射中。我没有看到任何迹象表明它必须有固定的列名。