Запрашивать сложные типы данных Hive - PullRequest
0 голосов
/ 06 июня 2018

Я пытаюсь запросить данные из исходной таблицы, но не могу правильно увидеть результат.

Структура исходной таблицы

c1 string,
c2 string,
c3 string,
temp1 struct
<
s1 : string,
s2 : string,
s3 : string,
temp2 : array<struct<as1 string,as2 :string>>                 
>

У меня есть данные в JSON формат.

Мои данные JSON имеют следующий формат

{"c1":"123","c2":"XYZ","c3":"IIK",
"temp1":{"s1":"low","s2":"45","s3":"yes"},
"temp2":[{"as1":"16-05-1992","as2":"fail"}]
}

В соответствии со структурой моей таблицы, у меня должен быть массив (struct) внутри структуры.Но данные, которые я имею, не такие.У меня есть структура отдельно и массив (структура) отдельно.Теперь, когда я запрашиваю эту таблицу, я получаю все записи для столбцов c1, c2, c3, s1, s2, как ожидалось, но вместо этого я не получаю столбцы as1 и as2, я получаю temp2 как null в выходных данных.Я что-то здесь упускаю?Если у меня есть данные типа struct<array<struct>> или можно разделить struct и array<struct> и json serde позаботится при чтении

1 Ответ

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

Согласно вашему примеру данных это должно быть struct и array<struct>:

c1 string,
c2 string,
c3 string,
temp1 struct
<
s1 : string,
s2 : string,
s3 : string
>,
temp2 : array<struct<as1 string,as2 :string>> 

Один объект JSON должен быть в одной строке, многострочный json не поддерживается:

{"c1":"123","c2":"XYZ","c3":"IIK","temp1":"s1":"low","s2":"45","s3":"yes"},"temp2":[{"as1":"16-05-1992","as2":"fail"}]}
...