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