如何在 Impala 表中插入无穷大

xbp102n0  于 2021-08-05  发布在  Hive
关注(0)|答案(1)|浏览(450)

如何在 Impala 中插入无穷大和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 修这个吗。

sd2nnvve

sd2nnvve1#

基于 Impala 的数学函数,你错过了 CAST(x AS DOUBLE) .
可以在文本数据文件中将infinity和nan分别指定为inf和nan,impala将它们解释为这些特殊值。它们也可以由某些算术表达式产生;例如,1/0返回无穷大,pow(-1,0.5)返回nan。或者可以强制转换文本值,例如cast('nan'为double)或cast('inf'为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

相关问题