如何在Scala Spark的where子句中使用UDF

ale*_*lov 1 scala user-defined-functions dataframe apache-spark spark-dataframe

我正在尝试检查数据帧中的2个双列是否相等到一定程度的精度,因此49.999999应该等于50.是否可以创建UDF并在where子句中使用它?我在Scala中使用Spark 2.0.

小智 5

你可以使用,udf但没有必要:

import org.apache.spark.sql.functions._

val precision: Double = ???

df.where(abs($"col1" - $"col2") < precision)
Run Code Online (Sandbox Code Playgroud)

udf 呼叫将以相同的方式工作,但效率较低

df.where(yourUdf($"col1", $"col2"))
Run Code Online (Sandbox Code Playgroud)