sql—在impala中将数组列作为行查询的变通方法

h5qlskok  于 2021-06-01  发布在  Hadoop
关注(0)|答案(1)|浏览(848)

在 hive 里,我可以用 explode 但在 Impala 身上怎么做呢?
我读了这篇文章,但仍然没有线索:
ApacheImpala中有没有一个函数与hive的“explode”函数等价?
这是我在配置单元中创建表的方式:

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>'

请告诉我最好的方法。谢谢

xoshrz7s

xoshrz7s1#

这就是在impala中查询一个数组的方法,这个数组可能相当于explode

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

默认情况下,impala使用名称“item”来访问基本数组的元素。对于结构数组,需要更改要访问的字段的“item”。

相关问题