registerJavaFunction (UDFRegistration)

將 Java 使用者定義函式註冊為 SQL 函式。

除了名稱和函式本身外,還可選擇指定回傳類型。 若未指定回傳類型,則透過反射推斷。

語法

registerJavaFunction(name, javaClassName, returnType=None)

參數

參數 類型 說明
name str 使用者定義函式的名稱。
javaClassName str 這是 Java 類別的完整名稱。
returnType DataType 或 str,選用 註冊的 Java 函式的回傳型別。 該值可以是 DataType 物件或 DDL 格式的型別字串。

退貨

None

Notes

在 Scala 筆記本儲存格中使用 spark.udf.register 來註冊 Scala UDF;同一個工作階段中,Python 也能存取。

Examples

註冊一個明確的 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)]

暫存器但未指定回傳類型(透過反射推斷)。

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

用 DDL 格式的回傳字串註冊。

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