registerJavaFunction (UDFRegistration)

Inscrit une fonction Java définie par l’utilisateur en tant que fonction SQL.

En plus d’un nom et de la fonction elle-même, le type de retour peut être spécifié éventuellement. Lorsque le type de retour n’est pas spécifié, il est déduit par réflexion.

Syntaxe

registerJavaFunction(name, javaClassName, returnType=None)

Paramètres

Paramètre Type Description
name str Nom de la fonction définie par l’utilisateur.
javaClassName str Nom complet de la classe Java.
returnType DataType ou str, facultatif Type de retour de la fonction Java inscrite. La valeur peut être un DataType objet ou une chaîne de type au format DDL.

Retours

None

Remarques

Utilisez spark.udf.register dans une cellule de notebook Scala pour inscrire une fonction UDF Scala ; il sera accessible à partir de Python dans la même session.

Exemples

Inscrivez-vous avec un type de retour explicite 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)]

Inscrivez-vous sans spécifier de type de retour (déduit par réflexion).

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

Inscrivez-vous avec une chaîne de type de retour au format DDL.

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