如何在Impala表

时间:2017-07-28 06:32:42

标签: hive impala

如何在Impala中插入Infinity和NaN。相同的测试适用于Hive,但在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解决这个问题。

1 个答案:

答案 0 :(得分:1)

根据Impala Mathematical Functions,您错过了CAST(x AS DOUBLE)

  

Infinity和NaN可以分别在文本数据文件中指定为inf和nan,Impala将它们解释为这些特殊值。它们也可以通过某些算术表达式产生;例如,1/0返回Infinity,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