Pular para o conteúdo principal

registrarFunçãoJava (UDFRegistration)

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

Além do nome e da própria função, 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

Tipo de dados ou str, opcional

O tipo de retorno da função Java registrada. O valor pode ser um objeto DataType ou uma string de tipo formatada em DDL.

Parâmetro

Tipo

Descrição

name

str

Nome da função definida pelo usuário.

javaClassName

str

Nome totalmente qualificado da classe Java.

returnType

Tipo de dados ou str, opcional

O tipo de retorno da função Java registrada. O valor pode ser um objeto DataType ou uma string de tipo formatada em DDL.

Devoluções

None

Notas

Use spark.udf.register em uma célula Scala Notebook para registrar uma UDF Scala ; ela estará acessível a partir Python na mesma sessão.

Exemplos

registro com um tipo de retorno explícito DataType .

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

registro sem especificar um tipo de retorno (inferido via reflexão).

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

registro com strings de tipo de retorno formatadas em DDL.

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