Значение Apache spark selectExpr int превышает максимальное значение

#apache-spark #apache-spark-sql

#apache-spark #apache-spark-sql

Вопрос:

в нашем приложении мы используем приведенное ниже выражение

 df.selectExpr((col_x*8*6)/(1024 * 1024 * 1024 * 60 * 15))
 

когда мы используем выше, мы получаем значение null из-за того, что эта часть превышает целое максимальное значение 1024 * 1024 * 1024 * 60 * 15

поэтому мы изменили приведенное выше выражение на приведенное ниже и его рабочее

 df.selectExpr((col_x*8*6)/(1024.0 * 1024.0 * 1024.0 * 60.0 * 15.0))
 

проблема в том, что у нас есть тысячи существующих выражений, так есть ли какой-либо дескриптор конфигурации, чтобы это целое число превышало максимальное значение

Комментарии:

1. максимальное значение ограничено размером целочисленной переменной, и вы можете изменить его только на long или double . Я не думаю, что вы можете что-то сделать, чтобы изменить размер int.

2. Ваш конечный результат будет иметь тип double , который вы можете преобразовать col_x в тип double

Ответ №1:

Попробуйте привести colx к типу данных long или double внутри вашего выражения.