zip_with(left, right, f)
Описание
Функция zip_with() объединяет два массива с помощью указанной функции, применяя её к соответствующим элементам массивов.
Параметры
left: Column - первый массивright: Column - второй массивf: Column - функция, которая принимает два аргумента и возвращает результат
Возвращаемое значение
Column - новый массив, полученный в результате применения функции к соответствующим элементам
Пример использования
from pyspark.sql.functions import zip_with, array, col, expr
from pyspark.sql import SparkSession
# Создаем SparkSession
spark = SparkSession.builder.appName("zip_with_example").getOrCreate()
# Создаем DataFrame с массивами
data = [
    ([1, 2, 3], [4, 5, 6]),
    ([10, 20], [30, 40])
]
df = spark.createDataFrame(data, ["arr1", "arr2"])
# Объединяем массивы с помощью различных функций
result = df.withColumn(
    "sum",
    zip_with("arr1", "arr2", expr("(x, y) -> x + y"))
).withColumn(
    "concat",
    zip_with("arr1", "arr2", expr("(x, y) -> concat(x, y)"))
)
result.show(truncate=False)
# Результат:
# +---------+---------+------------+----------------+
# |arr1     |arr2     |sum         |concat          |
# +---------+---------+------------+----------------+
# |[1, 2, 3]|[4, 5, 6]|[5, 7, 9]   |[14, 25, 36]   |
# |[10, 20] |[30, 40] |[40, 60]    |[1030, 2040]   |
# +---------+---------+------------+----------------+
 Примечания
- Возвращает NULL, если любой из массивов NULL
 - Если массивы разной длины, результат будет иметь длину меньшего массива
 - Полезно для:
 - Поэлементных операций над массивами
 - Объединения данных из разных массивов
 - Создания новых массивов на основе существующих
 - Связанные функции:
 array_zip()- объединение массивов в массив кортежейtransform()- применение функции к элементам массива