Spark-随机函数引发异常

时间:2019-03-25 11:51:07

标签: apache-spark hiveql random-seed

您好,我正在尝试为几个字段生成一个随机数。一个是字母数字,另一个是日期数据类型。

首先,我将两个字段都转换为整数类型并将它们加在一起。在此之上,我尝试应用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文字。

在此处检查了几则帖子,但没有发现这种情况

1 个答案:

答案 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)