我在pyspark中有以下代码,运行良好。
from pyspark.sql.types import IntegerType, DoubleType
from pyspark.sql.functions import udf, array
prod_cols = udf(lambda arr: float(arr[0])*float(arr[1]), DoubleType())
finalDf = finalDf.withColumn('click_factor', sum_cols(array('rating', 'score')))
现在我在scala中尝试了类似的代码。
val prod_cols = udf((rating: Double, score: Double) => {rating.toDouble*score.toDouble})
finalDf = finalDf.withColumn("cl_rate", prod_cols(finalDf("rating"), finalDf("score")))
不知何故,第二个代码总是不能给出正确的答案 null
或者 zero
你能帮我得到正确的scala代码吗。本质上我只需要一个代码,两个乘以两列,考虑到可能有空值 score
或者 rating
.
1条答案
按热度按时间hm2xizp91#
仅通过
Not Null
值到UDF
.更改以下代码
到