registerJavaFunction (UDFRegistration)
Enregistre une fonction définie par l'utilisateur Java 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é en option. Lorsque le type de retour n'est pas spécifié, il est déduit par réflexion.
Syntaxe
registerJavaFunction(name, javaClassName, returnType=None)
parameter
parameter | Type | Description |
|---|---|---|
| str | Nom de la fonction définie par l'utilisateur. |
| str | Nom entièrement qualifié de la classe Java. |
| Type de données ou str, facultatif | Le type de renvoi de la fonction Java enregistrée. La valeur peut être un objet |
Renvoie
None
Notes
Utilisez spark.udf.register dans une cellule de notebook Scala pour enregistrer une UDF Scala ; elle sera accessible depuis Python dans la même session.
Exemples
Enregistrez-vous avec un type de retour DataType explicite.
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)]
Enregistrer 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)]
Enregistrez-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)]