Улей и престо , Задача усечения целочисленного деления

Почему расщепление двух данных типа bigint в кусте не происходит для усечения целочисленного деления, а происходит до

1 ответ

Решение

Престо механика:

  1. Загрузка данных из различных источников данных через connectors в Presto JVM. (Разъем Hive, Mysql разъем и т. Д. См. Это)

  2. Обработка (скалярные функции или агрегатные функции) данных с использованием Java код.

  3. Вывести результаты из JVM (или диска, если включить spill).

На яве 1/2=0 поэтому Престо будет таким же. В Улье думаю из-за UDF вроде overrive operator: 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 

см.: Миграция из улья

Это тоже можно сделать так. выберите 1.0 * 1 / 3 из table_name вместо приведения значения

Другие вопросы по тегам