2017-07-28 6 views
0

So fügen Sie Infinity und NaN in Impala ein. Der gleiche Test funktioniert gut mit Hive, aber Fehler im Impala.So fügen Sie Infinity in Impala ein Tabelle

> create table z2 (x double); 
> insert into z2 values (1),("NaN"),("Infinity"),("-Infinity"); 
Query: insert into z1 values (1),("NaN"),("Infinity"),("-Infinity") 
ERROR: AnalysisException: Incompatible return types 'TINYINT' and 'STRING' of 
exprs '1' and ''NaN''. 

Kann jemand mir sagen, wie man das für Impala repariert.

Antwort

0

Basierend auf Impala Mathematical Functions, vermissen Sie die CAST(x AS DOUBLE).

Infinity und NaN können in Textdatendateien als inf bzw. nan angegeben werden, und Impala interpretiert sie als diese speziellen Werte. Sie können auch durch bestimmte arithmetische Ausdrücke erzeugt werden; Zum Beispiel gibt 1/0 die Infinity zurück und pow (-1, 0.5) gibt NaN zurück. Oder Sie können die Literalwerte wie CAST ('nan' AS DOUBLE) oder CAST ('inf' AS DOUBLE) umwandeln.

So sollte Ihr Einsatz lesen:

> insert into z2 values (1), (CAST ('nan' AS DOUBLE)), 
    (CAST ('inf' AS DOUBLE)), (- CAST ('inf' AS DOUBLE)); 

Dann werden Sie sehen:

> select * from z2; 
+-----------+ 
| x   | 
+-----------+ 
| 1   | 
| NaN  | 
| Infinity | 
| -Infinity | 
+-----------+ 
Fetched 4 row(s) in 0.12s 
Verwandte Themen