registerJavaFunction (UDFRegistration)

Registrerar en Java användardefinierad funktion som en SQL-funktion.

Förutom ett namn och själva funktionen kan returtypen anges. När returtypen inte har angetts härleds den via reflektion.

Syntax

registerJavaFunction(name, javaClassName, returnType=None)

Parameters

Parameter Type Beskrivning
name str Namnet på den användardefinierade funktionen.
javaClassName str Fullständigt kvalificerat namn på Java-klassen.
returnType DataType eller str, valfritt Returtypen för den registrerade Java funktionen. Värdet kan vara antingen ett DataType objekt eller en DDL-formaterad typsträng.

Retur

None

Notes

Använd spark.udf.register i en Scala Notebook-cell för att registrera en Scala UDF; den kommer att vara tillgänglig från Python i samma session.

Exempel

Registrera med en explicit DataType returtyp.

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

Registrera utan att ange en returtyp (härledd via reflektion).

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

Registrera med en DDL-formaterad returtypsträng.

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