registerJavaFunction (UDFRegistration)
Javaユーザー定義関数をSQL関数として登録します。
名前と関数自体に加えて、戻り値の型をオプションで指定できます。戻り値の型が指定されていない場合は、リフレクションによって推論されます。
構文
registerJavaFunction(name, javaClassName, returnType=None)
パラメーター
パラメーター | Type | 説明 |
|---|---|---|
| str | ユーザー定義関数の名前。 |
| str | Javaクラスの完全修飾名。 |
| データ型または文字列(省略可能) | 登録されたJava関数の戻り値の型。値は、 |
戻り値
None
注意
Scalaノートブックのセルでspark.udf.register使用して、 Scala UDFを登録します。同じセッション内のPythonからアクセスできます。
例
明示的な戻り値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)]
戻り値の型を指定せずに登録します(リフレクション経由で推測)。
Python
spark.udf.registerJavaFunction(
"javaStringLength2", "test.org.apache.spark.sql.JavaStringLength")
spark.sql("SELECT javaStringLength2('test')").collect()
# [Row(javaStringLength2(test)=4)]
DDL 形式の戻り値の型である文字列で登録します。
Python
spark.udf.registerJavaFunction(
"javaStringLength3", "test.org.apache.spark.sql.JavaStringLength", "integer")
spark.sql("SELECT javaStringLength3('test')").collect()
# [Row(javaStringLength3(test)=4)]