Impala позволяет выбирать только примитивные типы как часть оператора select, чтобы взорвать ваш массив (я предполагаю, что в вашей таблице есть только столбец с именем myarray), вам нужно будет сделать что-то подобное.
Демонстрация: In Hive
create table test_array (myarray array<string>) stored as parquet ;
-- tricky way to insert values for array
insert into test_array select array('a','b') from (select '1') t;
insert into test_array select array('c','d') from (select '1') t;
Импала
select myarray.item from test_array, test_array.myarray ;
Результаты
+------+
| item |
+------+
| a |
| b |
| c |
| d |
+------+
По умолчанию импала использует имя "item" для доступаваши элементы примитивных массивов.В случае массива структур вам нужно изменить «элемент» для поля, к которому вы хотите получить доступ.
Одна интересная вещь, если мы добавим пустой массив
insert into test_array select array() from (select '1') t;
, если мызапустив тот же запрос, вы не увидите пустой массив как часть результата, потому что по сути это похоже на внутреннее соединение между вашими записями и массивом, исключая пустые значения.Если вы хотите включить ваши записи в информацию о пустом массиве, запрос будет выглядеть так:
select myarray.item from test_array LEFT OUTER JOIN test_array.myarray ;
+------+
| item |
+------+
| c |
| d |
| a |
| b |
| NULL |
+------+
(Вы можете найти больше информации о различных объединениях здесь