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

UDF登録

ユーザー定義関数登録用のラッパー。このインスタンスはspark.udfからアクセスできます。

構文

Python
# Access through SparkSession
spark.udf

プロパティ

属性

説明

logs

UDF ログの UDFLogs インスタンスを返します。この機能は実験段階であり、不安定です。

方法

手法

説明

register(name, f, returnType)

Python関数(ラムダ関数含む)またはユーザー定義関数をSQL関数として登録します。 Spark Connect をサポートします。

registerJavaFunction(name, javaClassName, returnType)

Javaユーザー定義関数をSQL関数として登録します。 returnTypeが指定されていない場合は、リフレクションによって推論されます。Spark Connect をサポートします。

registerJavaUDAF(name, javaClassName)

Javaユーザー定義集計関数をSQL関数として登録します。 Spark Connect をサポートします。

Python
strlen = spark.udf.register("stringLengthString", lambda x: len(x))
spark.sql("SELECT stringLengthString('test')").collect()
Output
[Row(stringLengthString(test)='4')]
Python
from pyspark.sql.types import IntegerType
from pyspark.sql.functions import udf

slen = udf(lambda s: len(s), IntegerType())
_ = spark.udf.register("slen", slen)
spark.sql("SELECT slen('test')").collect()
Output
[Row(slen(test)=4)]
Python
import pandas as pd
from pyspark.sql.functions import pandas_udf

@pandas_udf("integer")
def add_one(s: pd.Series) -> pd.Series:
return s + 1

_ = spark.udf.register("add_one", add_one)
spark.sql("SELECT add_one(id) FROM range(3)").collect()
Output
[Row(add_one(id)=1), Row(add_one(id)=2), Row(add_one(id)=3)]