hive and presto,整数除法截断问题
hive and presto,Integer division truncation problem
为什么hive中两个bigint类型数据的拆分不是整型截断而是presto发生
Presto 机制:
通过connectors
将各种数据源的数据加载到 Presto JVM 中。 (Hive 连接器、Mysql 连接器等请参阅 this)
使用 Java
代码处理(标量函数或聚合函数)数据。
从 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
也可以这样做。
select 1.0 * 1 / 3 来自 table_name 而不是强制转换值
为什么hive中两个bigint类型数据的拆分不是整型截断而是presto发生
Presto 机制:
通过
connectors
将各种数据源的数据加载到 Presto JVM 中。 (Hive 连接器、Mysql 连接器等请参阅 this)使用
Java
代码处理(标量函数或聚合函数)数据。从 JVM(或磁盘,如果启用
spill
)输出结果。
In Java 1/2=0
因此 Presto 将是相同的。在 Hive 中,我认为是因为像 overrive operator
: LanguageManual+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
也可以这样做。 select 1.0 * 1 / 3 来自 table_name 而不是强制转换值