2017-07-28 10 views
0

Impalaに無限大と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''. 

誰でも私にこのインパラの問題を解決する方法を教えてもらえますか?

答えて

0

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 
関連する問題