hive 和 presto?整数除法截断问题

loo*_*lee 5 sql hive presto

为什么hive中两个bigint类型数据的分裂,整数除法截断不会发生,而presto会发生

Arc*_*hon 11

Presto机械师:

  1. 通过connectorsPresto JVM从各种数据源加载数据。(Hive 连接器、Mysql 连接器等,请参阅

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

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

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

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

int a = 1
int b = 2
c = 1.0*a/b
Run Code Online (Sandbox Code Playgroud)

在 Presto SQL 中

-- result: 0.3333333333333333
select cast(1 as double) / 3 from table_name 
Run Code Online (Sandbox Code Playgroud)

请参阅:从 Hive 迁移


Rav*_*eja 6

也可以这样操作。select 1.0 * 1 / 3 from table_name 而不是转换值