繁体   English   中英

如何使用EMR上的HiveQL将DynamoDB上的Map数据类型列导出为具有JSON数据类型的S3?

[英]How do you export a Map data type column on DynamoDB to S3 with JSON data type using HiveQL on EMR?

有记录在DynamoDB上映射数据类型,我想使用EMR上的HiveQL将这些记录导出到具有JSON数据格式的S3。 你是怎么做到的? 可能吗?

我阅读了以下文档,但我希望信息不算什么。

我尝试了以下步骤:

  1. 在DynamoDB上创建一个表

     TableName: DynamoDBTable1 HashKey: user_id 
  2. 将两条记录插入DynamoDB

     # record1 user_id: "0001" json: {"key1": "value1", "key2": "value2"} # record2 user_id: "0001" json: {"key1": "value1", "key2": "value2"} 
  3. 从DynamoDB在EMR上创建一个表

     CREATE EXTERNAL TABLE test (user_id string, json map<string, string>) STORED BY 'org.apache.hadoop.hive.dynamodb.DynamoDBStorageHandler' TBLPROPERTIES ("dynamodb.table.name" = "DynamoDBTable", "dynamodb.column.mapping" = "user_id:user_id,json:json"); 
  4. 将记录导出到S3

     INSERT OVERWRITE DIRECTORY 's3://some-bucket/exports/' select json from test where user_id = '0001'; 
  5. 确认S3存储桶,但导出的数据不是JSON格式...

     # Expected [ {"key1": "value1", "key2": "value2"}, {"key1": "value1", "key2": "value2"} ] # Actual key1^C{"s":"value1"}^Bkey2^C{"s":"value2"} key1^C{"s":"value1"}^Bkey2^C{"s":"value2"} 

DynamoDBStorageHandler类不支持以下DynamoDB数据类型,因此它们不能与dynamodb.column.mapping一起使用:

Map,List,Boolean,Null

暂无
暂无

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

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