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