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