UDFRegistration

Оболочка для регистрации определяемой пользователем функции. Доступ к этому экземпляру можно получить.spark.udf

Синтаксис

# Access through SparkSession
spark.udf

Свойства

Недвижимость Описание
logs Возвращает экземпляр UDFLogs для ведения журнала UDF. Эта функция является экспериментальной и нестабильной.

Методы

Метод Описание
register(name, f, returnType) Регистрирует функцию Python (включая лямбда-функции) или определяемую пользователем функцию в качестве функции SQL. Поддерживает Spark Connect.
registerJavaFunction(name, javaClassName, returnType) Регистрирует определяемую пользователем функцию Java как функцию SQL. Если returnType он не указан, он выводится с помощью отражения. Поддерживает Spark Connect.
registerJavaUDAF(name, javaClassName) Регистрирует определяемую пользователем агрегатную функцию Java в качестве функции SQL. Поддерживает Spark Connect.

Примеры

strlen = spark.udf.register("stringLengthString", lambda x: len(x))
spark.sql("SELECT stringLengthString('test')").collect()
[Row(stringLengthString(test)='4')]
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()
[Row(slen(test)=4)]
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()
[Row(add_one(id)=1), Row(add_one(id)=2), Row(add_one(id)=3)]