reduce(col, initialValue, merge, finish=None)
Описание
Функция reduce()
применяет функцию свертки к элементам массива.
Параметры
col
: Column - столбец с массивомinitialValue
: Any - начальное значениеmerge
: Function - функция для объединения текущего результата с элементом массиваfinish
: Function - функция для финальной обработки результата (опционально)
Возвращаемое значение
Тип результата функции merge
или finish
Пример использования
from pyspark.sql.functions import reduce, array, lit
from pyspark.sql import SparkSession
# Создаем SparkSession
spark = SparkSession.builder.appName("reduce_example").getOrCreate()
# Создаем DataFrame
data = [
("A", [1, 2, 3]),
("B", [4, 5, 6])
]
df = spark.createDataFrame(data, ["id", "values"])
# Вычисляем сумму элементов массива
result = df.select(
"id",
reduce(
"values",
lit(0),
lambda acc, x: acc + x
).alias("sum")
).show()
# Результат:
# +---+---+
# |id |sum|
# +---+---+
# |A |6 |
# |B |15 |
# +---+---+
Примечания
- Для фильтрации элементов массива используйте
filter()
- Для преобразования элементов массива используйте
transform()
- Для объединения массивов используйте
array_union()
- Для пересечения массивов используйте
array_intersect()