registerJavaFunction (UDFRegistration)

将Java用户定义函数注册为 SQL 函数。

除了名称和函数本身之外,还可以选择指定返回类型。 如果未指定返回类型,则通过反射推断它。

Syntax

registerJavaFunction(name, javaClassName, returnType=None)

参数

参数 类型 Description
name str 用户定义的函数的名称。
javaClassName str Java类的完全限定名称。
returnType DataType 或 str,可选 已注册Java函数的返回类型。 该值可以是对象 DataType 或 DDL 格式的类型字符串。

退货

None

注释

在 Scala 笔记本单元中使用 spark.udf.register 注册 Scala UDF;可以从同一会话中的Python访问它。

示例

使用显式 DataType 返回类型注册。

from pyspark.sql.types import IntegerType
spark.udf.registerJavaFunction(
    "javaStringLength", "test.org.apache.spark.sql.JavaStringLength", IntegerType())
spark.sql("SELECT javaStringLength('test')").collect()
# [Row(javaStringLength(test)=4)]

注册而不指定返回类型(通过反射推断)。

spark.udf.registerJavaFunction(
    "javaStringLength2", "test.org.apache.spark.sql.JavaStringLength")
spark.sql("SELECT javaStringLength2('test')").collect()
# [Row(javaStringLength2(test)=4)]

使用 DDL 格式的返回类型字符串注册。

spark.udf.registerJavaFunction(
    "javaStringLength3", "test.org.apache.spark.sql.JavaStringLength", "integer")
spark.sql("SELECT javaStringLength3('test')").collect()
# [Row(javaStringLength3(test)=4)]