如何在Impala中插入无穷大表
问题描述:
如何在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。
答
根据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