Обходной путь для запроса столбца массива в виде строк в Impala - PullRequest
0 голосов
/ 22 мая 2018

В Hive я могу использовать функцию explode, но как это сделать в Impala?

Я читал это, но все еще не понимаю:

Есть ли эквивалент функциидля функции разнесения Hive в Apache Impala?

Вот как я создал таблицу в Hive:

create table tb (arr_col array<string>)

insert into tb select array ('A','B') from (select 'temp') x

Мой запрос выдаст ошибку:

select tb.arr_col from tb

..in select list returns a complex type 'ARRAY<STRING>'.
Only scalar types are allowed in the select list.

ИЛИ

select tb.arr_col.item from tb

ERROR: AnalysisException: Illegal column/field reference 'arr_col.item' with intermediate collection 'item' of type 'ARRAY<STRING>'

Пожалуйста, посоветуйте лучший способ.Спасибо

1 Ответ

0 голосов
/ 23 мая 2018

Так вы запрашиваете массив в Impala, который может быть эквивалентен взрыву

select arr_col array.item from tb , tb.arr_col array ;

По умолчанию impala использует имя «item» для доступа к вашим элементам примитивных массивов.В случае массива структур вам нужно изменить «элемент» для поля, к которому вы хотите получить доступ.

...