您好,我正在尝试为几个字段生成一个随机数。一个是字母数字,另一个是日期数据类型。
首先,我将两个字段都转换为整数类型并将它们加在一起。在此之上,我尝试应用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的输入参数必须为 整数,长整数或null文字。
在此处检查了几则帖子,但没有发现这种情况
答案 0 :(得分:0)
您需要确定输入到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)