如何映射Hive for DynamoDb Amazon Console导出中的字段?

时间:2015-05-28 14:24:51

标签: hadoop hive amazon-dynamodb elastic-map-reduce amazon-emr

我正在尝试将带有“导入/导出”工具的Amazon Dynamodb Web控制台中的DynamoDb导出文件加载到Hive中。但我无法正确映射字段,因为DynamoDB Web控制台“导出”工具正在使用“ETX”“STX”。

以下是以[LF]

结束的示例行
Elapsed[ETX]{"n":"1477"}[STX]Device[ETX]{"n":"3"}[STX]Date[ETX]{"s":"2014-03-05T12:13:00.852Z"}[STX]Duration[ETX]{"n":"8075"}[LF]

对此的查询应该是什么?

CREATE EXTERNAL TABLE IF NOT EXISTS TableNameHere (creationDate string, device bigint, duration bigint, elapsed bigint)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' ???This is where i got stuck??? 
LOCATION 's3://abcdefg/ino/2015-05-28_12.22';

更新

我已经更新了查询,但它无法再次运行。

对于STX,

'\ 002' '\ 012'代表LF

CREATE EXTERNAL TABLE IF NOT EXISTS TableNameHere  (creationDate string, device bigint, duration bigint, elapsed bigint)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\002' 
                     LINES TERMINATED BY '\012'
LOCATION 's3://abcdefg/ino/2015-05-28_12.22';

查询结果:

Elapsed{"n":"0"}   Device{"n":"3"}   Duration{"n":"1073876"}   Date{"s":"2014-01-27T00:52:25.491Z"}     

那么,现在我该如何解析这些数据呢?我需要映射字段。 我应该使用自定义SerDe吗?

1 个答案:

答案 0 :(得分:2)

我认为已经有了SerDe:https://github.com/lyft/dynamodb-hive-serde