AWS Athena JSON格式失败

时间:2017-01-10 01:15:32

标签: json amazon-athena

我正在尝试从这个json上传数据:

JSON-A

[
  {"name": "james", "id": 41},
  {"name": "scott", "id": 62},
  {"name": "abhi", "id": 16},
  {"name": "kevin", "id": 53},
  {"name": "beau", "id": 12},
  {"name": "shally", "id": 35},
  {"name": "jude", "id": 53},
  {"name": "jason", "id": 77},
  {"name": "hongjian", "id": 35},
  {"name": "madhur", "id": 6}
]

如果它具有像

这样的父“数据”键

JSON-B

["data":{"name": "james","id": 41"},{.....}]

然后我知道我可以这样做:

CREATE EXTERNAL TABLE IF NOT EXISTS test.test (
  `data` array<struct<`name`:string,`id`:bigint>>
)
ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe'
WITH SERDEPROPERTIES (
  'serialization.format' = '1'
) LOCATION 's3://test-bucket/';

但是JSON-A的方法应该是什么?

2 个答案:

答案 0 :(得分:2)

您必须在&#39; s3:// test-bucket /&#39;:中保存一个文件 {"name": "james", "id": 41} {"name": "scott", "id": 62} {"name": "abhi", "id": 16} {"name": "kevin", "id": 53} {"name": "beau", "id": 12} {"name": "shally", "id": 35} {"name": "jude", "id": 53} {"name": "jason", "id": 77} {"name": "hongjian", "id": 35} {"name": "madhur", "id": 6}

答案 1 :(得分:1)

我认为这不会起作用,因为Hive / SerDe假设您的文本文件每行包含一条记录。来自org.openx.data.jsonserde.JsonSerDe documentation

  1. One Record Per Line - 虽然我不确定您的样本是否符合多行方面的文字,但样本确实在同一行中包含多个记录。
  2.   

    重要!!!请阅读以下内容! Json记录必须是每行一个,也就是说,serde不能使用多行Json。

    1. Array Examples One-per-Line - serde示例确实显示了如何使用数组,但同样,不是包含同一行中多个记录的顶级数组。