2016-05-04 17 views
2

Ich benutze impala 2.3 von cdh 5.5.1Impala-Unterstützung für Arrays und Karten

Aus meiner Sicht sollte diese Version Array und Karten unterstützen.

Ich habe eine Tabelle, die Array-Feld hat (siehe unten)

Wenn ich versuche, die CLI zu verwenden, um dieses Feld zu holen Ich erhalte: Ausdr ‚slots_available‘ in der Auswahlliste gibt einen komplexen Typ ‚ARRAY ". (siehe unten)

Unterstützt impala 2.3 wirklich Arrays? Fehle ich etwas?

Yosi

Server-Version: impalad Version 2.3.0-cdh5.5.1 RELEASE (Build 73bf5bc5afbb47aa7eab06cfbf6023ba8cb74f3c)


Willkommen in der Schale Impala. Copyright (c) 2015 Cloudera, Inc. Alle Rechte vorbehalten. (Impala Shell v2.3.0-cdh5.5.1 (73bf5bc) gebaut am Wed Dez 2 10:39:33 PST 2015)

Wenn Pretty-Printing deaktiviert ist, können Sie das '--output_delimiter' Flag setzen das Trennzeichen für Felder in derselben Zeile. Der Standardwert ist ','.


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]> wählen slots_available von start_session Grenze 1; Abfrage: select slots_available ab start_session limit 1 FEHLER: AnalysisException: Ausdruck 'slots_available' in der Auswahlliste gibt einen komplexen Typ 'ARRAY' zurück. In der Auswahlliste sind nur Skalartypen zulässig.

Antwort

0

Sie fragten: "Unterstützt impala 2.3 wirklich Arrays?"

Die Antwort ist "Ja, aber nicht diese Verwendung von Arrays."

From the documentation:

The result set of an Impala query always contains all scalar types; the elements and fields within any complex type queries must be "unpacked" using join queries. A query cannot directly retrieve the entire value for a complex type column. Impala returns an error in this case. Queries using SELECT * are allowed for tables with complex types, but the columns with complex types are skipped.