将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)]