Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
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)]