16 | Spark SQL 的 UDF(用户自定义函数)
Spark SQL 的用户自定义函数(UDF)允许你在Spark SQL中注册一个自定义函数,然后在Spark SQL查询中像使用内置函数一样使用它。
以下是如何在Spark SQL中创建和使用UDF的步骤:
- 使用Scala或Java编写你的函数逻辑。
- 在
SparkSession
中注册这个函数作为UDF。 - 在Spark SQL查询中使用这个UDF。
以下是一个简单的例子,假设我们有一个字符串输入,我们想要返回其长度。
import org.apache.spark.sql.SparkSession
import org.apache.spark.sql.functions.udf
val spark = SparkSession.builder.appName("UDF Example").getOrCreate()
// 定义一个简单的UDF,返回字符串的长度
val stringLengthUDF = udf((s: String) => if (s != null) s.length else 0)
// 注册UDF
spark.udf.register("strLen", stringLengthUDF)
// 创建一个示例DataFrame
import spark.implicits._
val df = Seq("Hello", "World", null).toDF("word")
// 使用UDF
val result = df.selectExpr("word", "strLen(word) as length")
// 显示结果
result.show()
这个例子中,我们定义了一个名为stringLengthUDF
的UDF,它接受一个字符串参数并返回其长度。然后我们使用spark.udf.register
方法将其注册为名为strLen
的UDF。在查询中,我们使用selectExpr
方法来调用这个UDF,并将结果列命名为length
。最后,我们使用show
方法来显示查询结果。
评论已关闭