registerJavaFunction (UDFRegistration)

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

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

構文

registerJavaFunction(name, javaClassName, returnType=None)

パラメーター

パラメーター タイプ 説明
name str ユーザー定義関数の名前。
javaClassName str Java クラスの完全修飾名。
returnType DataType または str(省略可能) 登録済みのJava関数の戻り値の型。 値には、 DataType オブジェクトまたは DDL 形式の型文字列のいずれかを指定できます。

返品

None

メモ

Scala ノートブック セルで spark.udf.register を使用して Scala UDF を登録します。同じセッション内のPythonからアクセスできます。

例示

明示的な 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)]