Skip to content

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