hive and presto,整数除法截断问题

hive and presto,Integer division truncation problem

为什么hive中两个bigint类型数据的拆分不是整型截断而是presto发生

Presto 机制:

  1. 通过connectors将各种数据源的数据加载到 Presto JVM 中。 (Hive 连接器、Mysql 连接器等请参阅 this

  2. 使用 Java 代码处理(标量函数或聚合函数)数据。

  3. 从 JVM(或磁盘,如果启用 spill)输出结果。

In Java 1/2=0 因此 Presto 将是相同的。在 Hive 中,我认为是因为像 overrive operator: LanguageManual+UDF

这样的 UDF

为了避免截断,只需要'Thinking in Java':

int a = 1
int b = 2
c = 1.0*a/b

在瞬间SQL

-- result: 0.3333333333333333
select cast(1 as double) / 3 from table_name 

参见:Migrating From Hive

也可以这样做。 select 1.0 * 1 / 3 来自 table_name 而不是强制转换值