map_filter(map, f)
Описание
Функция map_filter() фильтрует элементы карты (map) с помощью указанной функции-предиката.
Параметры
map: Column - карта (map)f: Column - функция-предикат, которая принимает ключ и значение и возвращает boolean
Возвращаемое значение
Column - новая карта, содержащая только элементы, для которых функция-предикат вернула true
Пример использования
from pyspark.sql.functions import map_filter, map, expr
from pyspark.sql import SparkSession
# Создаем SparkSession
spark = SparkSession.builder.appName("map_filter_example").getOrCreate()
# Создаем DataFrame с картами
data = [
    ({"a": 1, "b": 2, "c": 3},),
    ({"x": 10, "y": 20, "z": 30},)
]
df = spark.createDataFrame(data, ["map"])
# Фильтруем элементы карты
result = df.withColumn(
    "even_values",
    map_filter("map", expr("(k, v) -> v % 2 == 0"))
).withColumn(
    "greater_than_10",
    map_filter("map", expr("(k, v) -> v > 10"))
)
result.show(truncate=False)
# Результат:
# +----------------+----------------+------------------+
# |map             |even_values     |greater_than_10   |
# +----------------+----------------+------------------+
# |{a -> 1, b -> 2}|{b -> 2}       |{}                |
# |{x -> 10, y -> 20}|{x -> 10, y -> 20}|{y -> 20, z -> 30}|
# +----------------+----------------+------------------+
 Примечания
- Возвращает NULL, если карта NULL
 - Возвращает пустую карту, если ни один элемент не удовлетворяет условию
 - Полезно для:
 - Фильтрации элементов карты
 - Выбора элементов по условию
 - Создания подмножеств карты
 - Связанные функции:
 transform_keys()- преобразование ключей картыtransform_values()- преобразование значений карты