Compartilhar via


registerJavaFunction (UDFRegistration)

Registra uma função Java definida pelo usuário como uma função SQL.

Além de um nome e a função em si, o tipo de retorno pode ser especificado opcionalmente. Quando o tipo de retorno não é especificado, ele é inferido por meio de reflexão.

Sintaxe

registerJavaFunction(name, javaClassName, returnType=None)

Parâmetros

Parâmetro Tipo Descrição
name str Nome da função definida pelo usuário.
javaClassName str Nome totalmente qualificado da classe Java.
returnType DataType ou str, opcional O tipo de retorno da função Java registrada. O valor pode ser um DataType objeto ou uma cadeia de caracteres de tipo formatada em DDL.

Devoluções

None

Observações

Use spark.udf.register em uma célula de notebook Scala para registrar um UDF scala; ele estará acessível de Python na mesma sessão.

Exemplos

Registre-se com um tipo de retorno explícito 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)]

Registre-se sem especificar um tipo de retorno (inferido via reflexão).

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

Registre-se com uma cadeia de caracteres de tipo de retorno formatada em DDL.

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