2017-07-28 253 views
0

如何在Impala中插入Infinity和NaN。同样的测试适用于Hive,但在Impala中发生错误。如何在Impala中插入无穷大表

> 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''. 

谁能告诉我如何解决这个Impala。

回答

0

根据Impala Mathematical Functions,您缺少CAST(x AS DOUBLE)

Infinity和NaN可以在文本数据文件中分别指定为inf和nan,Impala将它们解释为这些特殊值。它们也可以由某些算术表达式产生;例如,1/0返回无穷大,pow(-1,0.5)返回NaN。或者您可以投射文字值,例如CAST('nan'AS DOUBLE)或CAST('inf'AS DOUBLE)。

所以你插入应该阅读:

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

然后你就会看到:

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