Hive避免转换为Scientific

时间:2018-06-13 13:16:11

标签: hive

我在hive中有一个值转换错误,如下所示。如何解决它。

select 28200*100000;
select cast(28200*100000 as BIGINT);
output: -1474967296

实际输出应为

2820000000

1 个答案:

答案 0 :(得分:0)

在你的第一个查询中,Hive会自动将你的结果转换为整数,因为你的乘数是整数,结果超过整数精度(它在一天结束时是纯Java)。在第二个查询中,在数学运算之后进行强制转换,这就是为什么得到相同的结果。您可以通过以下方式执行此操作

在数学运算之前进行投射

select cast(28200 as bigint) * cast(100000 as bigint);

或表示值为long(因此结果也很长)

select 28200L*100000L;