Condividi tramite


registerJavaFunction (UDFRegistration)

Registra una funzione Java definita dall'utente come funzione SQL.

Oltre a un nome e alla funzione stessa, è possibile specificare facoltativamente il tipo restituito. Quando il tipo restituito non viene specificato, viene dedotto tramite reflection.

Sintassi

registerJavaFunction(name, javaClassName, returnType=None)

Parametri

Parametro Tipo Descrizione
name str Nome della funzione definita dall'utente.
javaClassName str Nome completo della classe Java.
returnType DataType o str, facoltativo Tipo restituito della funzione Java registrata. Il valore può essere un DataType oggetto o una stringa di tipo DDL formattato.

Restituzioni

None

Note

Usare spark.udf.register in una cella del notebook Scala per registrare una funzione definita dall'utente scala; sarà accessibile da Python nella stessa sessione.

Examples

Eseguire la registrazione con un tipo restituito esplicito 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)]

Registra senza specificare un tipo restituito (dedotto tramite reflection).

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

Eseguire la registrazione con una stringa di tipo restituito in formato DDL.

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