Spark: Как сопоставить Python с пользовательскими функциями Scala или Java?

аюсь применить пользовательскую функцию для Window в PySpark. Я читал, что UDAF может быть подходящим способом, но я не смог найти ничего конкретного.

Чтобы привести пример (взято отсюда:Технический блог Xinh и модифицировано для PySpark):

from pyspark import SparkConf
from pyspark.sql import SparkSession
from pyspark.sql.window import Window
from pyspark.sql.functions import avg

spark = SparkSession.builder.master("local").config(conf=SparkConf()).getOrCreate()

a = spark.createDataFrame([[1, "a"], [2, "b"], [3, "c"], [4, "d"], [5, "e"]], ['ind', "state"])

customers = spark.createDataFrame([["Alice", "2016-05-01", 50.00],
                                    ["Alice", "2016-05-03", 45.00],
                                    ["Alice", "2016-05-04", 55.00],
                                    ["Bob", "2016-05-01", 25.00],
                                    ["Bob", "2016-05-04", 29.00],
                                    ["Bob", "2016-05-06", 27.00]],
                               ["name", "date", "amountSpent"])

customers.show()

window_spec = Window.partitionBy("name").orderBy("date").rowsBetween(-1, 1)

result = customers.withColumn( "movingAvg", avg(customers["amountSpent"]).over(window_spec))

result.show()

Я подаю заявкуavg который уже встроен вpyspark.sql.functions, но если вместоavg Я хотел использовать что-то более сложное и написать свою собственную функцию, как бы я это сделал?

Ответы на вопрос(0)

Ваш ответ на вопрос