蜂巢和presto,整数除法截断问题

时间:2018-10-31 03:26:33

标签: sql hive presto

为什么在蜂房中两个bigint类型数据的拆分在整数除法截断时不会发生,而是先发生

2 个答案:

答案 0 :(得分:2)

Presto机械师:

  1. 通过connectors将来自各种数据源的数据加载到Presto JVM中。 (配置单元连接器,Mysql连接器等,请参见this

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

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

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

为避免被截断,只需“在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

答案 1 :(得分:0)

这也可以通过这种方式完成。 从table_name中选择1.0 * 1/3而不是强制转换值