Skip to content

map_zip_with(map1, map2, function)

Описание

Функция map_zip_with() объединяет два Map-столбца, применяя указанную функцию к значениям с одинаковыми ключами.

Параметры

  • map1: Column - первый Map-столбец
  • map2: Column - второй Map-столбец
  • function: Function - функция, которая будет применена к значениям с одинаковыми ключами

Возвращаемое значение

Map - новый Map-столбец с результатами применения функции

Пример использования

from pyspark.sql import SparkSession
from pyspark.sql.functions import map_zip_with, col

# Создаем SparkSession
spark = SparkSession.builder.appName("map_zip_with_example").getOrCreate()

# Создаем DataFrame с Map-столбцами
data = [
    ({"a": 1, "b": 2}, {"a": 3, "b": 4}),
    ({"x": 5, "y": 6}, {"x": 7, "y": 8})
]
df = spark.createDataFrame(data, ["map1", "map2"])

# Объединяем Map-столбцы, складывая значения
result = df.select(
    map_zip_with("map1", "map2", lambda x, y: x + y).alias("sum_map")
).show()

# Результат:
# +----------------+
# |        sum_map|
# +----------------+
# |{a -> 4, b -> 6}|
# |{x -> 12, y -> 14}|
# +----------------+

Примечания

  • Если ключ есть только в одном Map-столбце, значение из другого Map-столбца будет NULL
  • Функция должна принимать два параметра и возвращать значение
  • Для работы с массивами используйте array_zip()
  • Для объединения Map-столбцов без функции используйте map_concat()