メインコンテンツまでスキップ

registerJavaFunction (UDFRegistration)

Javaユーザー定義関数をSQL関数として登録します。

名前と関数自体に加えて、戻り値の型をオプションで指定できます。戻り値の型が指定されていない場合は、リフレクションによって推論されます。

構文

registerJavaFunction(name, javaClassName, returnType=None)

パラメーター

パラメーター

Type

説明

name

str

ユーザー定義関数の名前。

javaClassName

str

Javaクラスの完全修飾名。

returnType

データ型または文字列(省略可能)

登録されたJava関数の戻り値の型。値は、 DataTypeオブジェクトまたは DDL 形式の型文字列のいずれかになります。

戻り値

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