无法在pyspark项目中定义udf

时间:2016-09-22 14:25:10

标签: python pyspark udf apache-spark-ml

我有一个使用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并且它工作正常。

2 个答案:

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