Spark - случайная функция выдает исключение - PullRequest
0 голосов
/ 25 марта 2019

Привет, все. Я пытаюсь сгенерировать случайное число для пары полей. Один - буквенно-цифровой, а другой - тип данных date.

Сначала я преобразовал оба поля в целочисленный тип и добавил их вместе. Кроме того, я пытаюсь применить функцию rand (). Он отлично работает в Hive, но когда я пытаюсь выполнить то же самое в Spark, он выдает нижеупомянутую ошибку

SELECT
RAND(CAST(EMP_DEPT AS Int) + CAST(coalesce(PAY_DATE, CAST('1900-01-01' AS timestamp)) AS Int) * 1000000000) AS RANDOM_NUM
FROM EMPLOYEE

org.apache.spark.sql.AnalysisException: входной аргумент для rand должен быть целое число, длинный или нулевой литерал.;

Здесь проверил пару постов, но не нашел этот сценарий

1 Ответ

0 голосов
/ 26 марта 2019

Вам необходимо определить тип столбца, который вводится в RAND.Вы можете сделать это, удалив RAND и просмотрев схему.Например,

sql("select cast(coalesce(current_timestamp(), CAST('1900-01-01' AS timestamp)) AS Int) * 1000000000 as x").printSchema

производит

root
 |-- x: integer (nullable = false)
...