Skip to main content

registerJavaFunction (UDFRegistration)

Registers a Java user-defined function as a SQL function.

In addition to a name and the function itself, the return type can be optionally specified. When the return type is not specified, it is inferred via reflection.

Syntax

registerJavaFunction(name, javaClassName, returnType=None)

Parameters

Parameter

Type

Description

name

str

Name of the user-defined function.

javaClassName

str

Fully qualified name of the Java class.

returnType

DataType or str, optional

The return type of the registered Java function. The value can be either a DataType object or a DDL-formatted type string.

Returns

None

Notes

Use spark.udf.register in a Scala notebook cell to register a Scala UDF; it will be accessible from Python in the same session.

Examples

Register with an explicit DataType return type.

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

Register without specifying a return type (inferred via reflection).

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

Register with a DDL-formatted return type string.

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