sql - hive和presto,整数除法截断问题

标签 sql hive presto

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

最佳答案

Presto机械师:

  • 通过 connectors 从各种数据源加载数据进入 Presto JVM。 (Hive 连接器、Mysql 连接器等见 this)
  • 使用 Java 处理(标量函数或聚合函数)数据代码。
  • 从 JVM(或磁盘,如果启用 spill )输出结果。

  • 在 Java 中 1/2=0因此 Presto 将是相同的。在 Hive 中,我认为因为 UDF 就像 overrive operator :LanguageManual+UDF
    为了避免截断,只需要'Thinking in Java':
    int a = 1
    int b = 2
    c = 1.0*a/b
    
    在 Presto SQL 中
    -- result: 0.3333333333333333
    select cast(1 as double) / 3 from table_name 
    
    见:Migrating From Hive

    关于sql - hive和presto,整数除法截断问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53075834/

    相关文章:

    mysql - 在 MySQL 中使用 REPLACE 实际上并不是替换行

    hadoop - 从Hive连接到现有数据库(在HDFS上)

    hadoop - MAX 中的 NULL,HIVE 中的 MIN 函数

    sql - PrestoDB : select all dates between two dates

    mysql - Amazon Athena 将字符串转换为日期

    presto - Presto 中的用户定义函数

    mysql - 使用 REGEX 从 mySQL 中的表列中选择字符串模式

    mysql - 设置我的画廊表格

    sql - 条件计数: Performance differences in using SUM() vs COUNT()?

    hadoop - Cloudera/Hive - 主机名更改后无法访问表