我可以在DataFrame.selectExpr中使用python函数吗?

时间:2017-05-17 00:22:55

标签: apache-spark pyspark databricks

我有DataFrame我正在执行selectExpr

selectExpr("src.ID", "dst.ID", "SQRT(POW((src.X - dst.X),2) + POW((src.Y - dst.Y),2)) as dist") \

有什么办法可以在Python函数的dist列上做这个路径吗?

1 个答案:

答案 0 :(得分:1)

我是来自scala但是在python中显然有类似的方式。 udf包中的sql.fucnctions函数允许开发人员创建自己的UserDefinedFunction并在spark Dataframe操作和SQL查询中使用它们。 这是可以执行您所要求的代码的代码

val constumeFunction = udf((x: Double, y: Double, z: Double, t: Double) => pow(x - y, 2) + pow(z - t, 2))

然后您可以在UserDefinedFunction方法中调用此select,如下所示:

selectExpr($"src.ID", $"dst.ID",costumeFunction(src.X, dst.X, src.Y, dst.Y) as dist")

很抱歉使用Scala代码回答,但我确信在python中有一种非常类似的方式