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