蜂巢以避免转换为科学

  • 本文关键字:转换 蜂巢 hive
  • 更新时间 :
  • 英文 :


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

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

实际输出应为

2820000000

在第一个查询中,Hive 会自动将结果转换为整数,因为您要乘以整数并且结果超过了整数精度(归根结底是纯 Java(。在第二个查询中,转换是在数学运算之后完成的,这就是您获得相同结果的原因。您可以通过以下方式执行此操作

数学运算前的强制转换

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

或指示值为长整型(因此结果也将是长

(
select 28200L*100000L;

最新更新