2017-01-10 117 views
1

我想从这个JSON数据上传:AWS雅典娜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应该怎么做?

+1

JSON-A的意思表示在表中的单个单元格?因为这是你的创建声明 – belostoky

+1

多数民众赞成多少我不想要的。我希望每个元素都像表格中的不同单元格一样,并且无法弄清楚。无法为JSON-A提供创建语句。 – user3089927

回答

0

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

  1. One Record Per Line - 虽然我不知道你的样品,就是要在尊重多文字,样品确实含有在同一条线上的多个记录。

重要!阅读下面! Json记录必须每行一个,也就是说,serde不能用于多行Json。

  • Array Examples One-per-Line - 所述SERDE示例并示出如何使用阵列的工作,但再次,而不是顶级阵列中的同一行包含多条记录。
  • 1

    您必须持有一个文件 'S3://测试桶/':
    {"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}