impala对数组和Map的支持

hgncfbus  于 2021-06-26  发布在  Impala
关注(0)|答案(1)|浏览(386)

我正在使用cdh5.5.1中的impala2.3
据我所知,这个版本应该支持数组和Map。
我有一个包含数组字段的表(请参见下文)
当我尝试使用cli获取此字段时,得到的结果是:select list中的expr'slots\u available'返回一个复杂类型'array'(请参见下文)
Impala2.3真的支持数组吗?我错过什么了吗?
尤西
服务器版本:impalad版本2.3.0-cdh5.5.1发行版(内部版本73bf5bc5afbb47aa7eab06cfbf6023ba8cb74f3c)
欢迎来到 Impala 壳。版权所有(c)2015 cloudera,inc.保留所有权利(impala shell v2.3.0-cdh5.5.1(73bf5bc)于2015年12月2日星期三10:39:33建成)
禁用漂亮打印时,可以使用“-output\u delimiter”标志为同一行中的字段设置分隔符。默认值为“,”。

CREATE EXTERNAL TABLE olv_event.session (                
   event_id STRING,                                             
   ts BIGINT,                                                   
   slots_available ARRAY<STRING>                                
 )                                                              

 PARTITIONED BY (                                               
   dt STRING,                                                   
   hr INT                                                       
 )                                                              

 WITH SERDEPROPERTIES ('serialization.format'='1')              
 STORED AS PARQUET                                              
 LOCATION 'hdfs://prod-hdp-master:8020/olv/event/session' 
 TBLPROPERTIES ('transient_lastDdlTime'='1460364027')

[prod-hdp-slave-1:21000]>从start\u session limit 1选择可用插槽;查询:select slots\u available from start\u session limit 1错误:analysisexception:选择列表中的expr“slots\u available”返回复杂类型“array”。选择列表中只允许使用标量类型。

dvtswwa3

dvtswwa31#

你问,“Impala2.3真的支持数组吗?”
答案是“是的,但不是数组的这种用法。”
根据文件:
impala查询的结果集总是包含所有标量类型;任何复杂类型查询中的元素和字段都必须使用连接查询进行“解包”。查询无法直接检索复杂类型列的整个值。在这种情况下,impala返回一个错误。对于具有复杂类型的表,允许使用select*进行查询,但会跳过具有复杂类型的列。

相关问题