如何在 Impala 表中插入无穷大
Posted
技术标签:
【中文标题】如何在 Impala 表中插入无穷大【英文标题】:How to insert infinity in Impala Table 【发布时间】:2017-07-28 06:32:42 【问题描述】:如何在 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】:基于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
【讨论】:
以上是关于如何在 Impala 表中插入无穷大的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Impala 中插入 Array<Struct> 值?