有些记录在DynamoDB上映射数据类型,我想使用EMR上的HiveQL将这些记录导出为具有JSON数据格式的S3。 你是怎么做到的?有可能吗?
我阅读了以下文档,但我想要的信息一无所获。
我尝试了以下步骤:
在DynamoDB上创建一个表
TableName: DynamoDBTable1
HashKey: user_id
将两条记录插入DynamoDB
# record1
user_id: "0001"
json: {"key1": "value1", "key2": "value2"}
# record2
user_id: "0001"
json: {"key1": "value1", "key2": "value2"}
在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");
将记录导出到S3
INSERT OVERWRITE DIRECTORY 's3://some-bucket/exports/' select json from test where user_id = '0001';
确认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"}
答案 0 :(得分:0)
DynamoDBStorageHandler类不支持以下DynamoDB数据类型,因此它们不能与dynamodb.column.mapping一起使用:
地图上 列表, 布尔, 空