我有一个使用pyspark的python项目,我试图在spark项目中定义一个udf函数(不在我的python项目中),特别是在spark \ python \ pyspark \ ml \ tuning.py中,但是我遇到了酸洗问题。它无法加载udf。 代码:
from pyspark.sql.functions import udf, log
test_udf = udf(lambda x : -x[1], returnType=FloatType())
d = data.withColumn("new_col", test_udf(data["x"]))
d.show()
当我尝试d.show()时,我得到了未知属性test_udf
的例外在我的python项目中,我定义了许多udf并且它工作正常。
答案 0 :(得分:0)
将以下内容添加到您的代码中。它没有识别数据类型。
from pyspark.sql.types import *
如果这有帮助,请告诉我。感谢。
答案 1 :(得分:0)
发现有2个问题
1)由于某种原因,它不喜欢returnType = FloatType()我需要将它转换为FloatType(),尽管这是签名
2)x列中的数据是一个向量,由于某种原因,我必须将其转换为float
工作代码:
from pyspark.sql.functions import udf, log
test_udf = udf(lambda x : -float(x[1]), FloatType())
d = data.withColumn("new_col", test_udf(data["x"]))
d.show()