registerJavaFunction (UDFRegistration)

Regista uma função Java definida pelo utilizador 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, é inferido por reflexão.

Sintaxe

registerJavaFunction(name, javaClassName, returnType=None)

Parâmetros

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

Devoluções

None

Notes

Use spark.udf.register numa célula de caderno Scala para registar um UDF Scala; estará acessível em Python na mesma sessão.

Exemplos

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

Registar sem especificar um tipo de retorno (inferido por reflexão).

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

Registar com uma cadeia 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)]