我使用的是cdh 5.5.1中的黑斑羚2.3
据我理解,这个版本应该支持数组和映射。
我有一个有数组字段的表(请看下面)
当我尝试使用CLI来获取这个字段时,我得到:选择列表中的Expr 'slots_available‘返回一个复杂类型的“数组”。(请见下文)
黑斑羚2.3真的支持数组吗?我是不是遗漏了什么?
约西
服务器版本: impalad版本2.3.0-cdh5.5.1 (构建73bf5bc5afbb47aa7eab06cfbf6023ba8cb74f3c)
欢迎来到黑斑羚壳。2015年Cloudera公司版权所有。(Impala Shell v2.3.0-cdh5.5.1 (73bf5bc)建于12月2日10:39:33太平洋标准时间2015年)
禁用漂亮打印时,可以使用“-output_ 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从1:21000>从start_session限制1选择start_session;查询:从start_session限制1选择slots_available错误:选择列表中的AnalysisException: Expr ' slots_available‘返回一个复杂类型的’数组‘。选择列表中只允许标量类型。
发布于 2016-05-05 03:41:59
您问过,“impala 2.3真的支持数组吗?”
答案是“是的,但不是数组的这种用法。”
从文件中:
Impala查询的结果集始终包含所有标量类型;任何复杂类型查询中的元素和字段必须使用联接查询“解压缩”。查询不能直接检索复杂类型列的整个值。在这种情况下,Impala返回一个错误。对于具有复杂类型的表,允许使用SELECT *进行查询,但跳过具有复杂类型的列。
https://stackoverflow.com/questions/37026440
复制相似问题