создать таблицу кустов в формате массива json - PullRequest
0 голосов
/ 09 июня 2018

У меня есть формат файла json в s3:

{
  "Id" : "123-6789",
  "items" : [ {
    item1: "chair",
    item2: "table"
  }, {
    item1: "shoes",
    item2: "socks"
  }, {
    item1: "phone",
    item2: "charger"
  } ]
}

Необходимо загрузить это в таблицу улья:

create EXTERNAL table Items(
Id string,
Items array<struct<item1:string,item2:string>>)
ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe'
LOCATION 's3://path/';

Когда я выбираю * из элементов, я получаю:

Id        items 
123-6789 [{"item1":"chair","item2":"table"},{"item1":"shoes","item2":"socks"},{"item1":"phone","item2":"charger"}]

Мне нужен был следующий вывод:

Id          Item1   Item2

123-6789    chair   table

123-6789    shoes   socks

123-6789    phone   charger

Я знаю, что это был ранее заданный вопрос, но я не получил ответа на то, что ожидал.

1 Ответ

0 голосов
/ 09 июня 2018

Используйте LATERAL VIEW и explode.

select Id,a.item1,a.item2
from
Items LATERAL VIEW explode (result) r as a

В качестве альтернативы,

select 
    Id, 
    get_json_object(Items,'$.item1') as item1,
    get_json_object(Items,'$.item2') as item2
from items
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...