我正在使用生成随机值的UDF为我的数据框计算一列,然后我想与另一列中的该列相关联,但UDF不断重新计算。
我可以以某种方式使我的计算列不被重新计算吗?
简化示例:
$ import scala.util.Random
$ val r = new Random
$ val func: () => Int = () => r.nextInt(100)
$ import org.apache.spark.sql.functions.udf
$ val udfFunc = udf(func)
$ import spark.implicits._
$ val df = Seq(1).toDF("value")
$ df.withColumn("udfRandom", udfFunc()).withColumn("sameUdfRandom", $"udfRandom").show
+-----+---------+-------------+
|value|udfRandom|sameUdfRandom|
+-----+---------+-------------+
| 1| 51| 76|
+-----+---------+-------------+
我能想到的其他解决方案:
random()
函数值发送到UDF,从外部注入随机性