str_to_map(text[, pairDelim, keyValueDelim])
Описание
Функция str_to_map() создает карту после разделения текста на пары ключ/значение с использованием разделителей. По умолчанию используются разделители ',' для пар и ':' для ключ/значение.
Параметры
text: str - текст для преобразования в картуpairDelim: str (опционально) - разделитель пар (по умолчанию ',')keyValueDelim: str (опционально) - разделитель ключ/значение (по умолчанию ':')
Возвращаемое значение
Map - карта с парами ключ/значение
Пример использования
from pyspark.sql.functions import str_to_map, lit
# Создаем DataFrame с текстовыми строками
df = spark.createDataFrame([
    ("name:John,age:30,salary:50000",),
    ("id:1,name:Alice,value:100",),
    ("date:2023-01-01,amount:100.5,category:expense",),
    (None,)
], ["text_data"])
# Преобразуем в карту
df.select(
    "text_data",
    str_to_map("text_data").alias("map_default"),
    str_to_map("text_data", "|", "=").alias("map_custom")
).show(truncate=False)
# Результат:
# +--------------------------------+------------------------------------------+------------------------------------------+
# |text_data                       |map_default                               |map_custom                                |
# +--------------------------------+------------------------------------------+------------------------------------------+
# |name:John,age:30,salary:50000   |{name -> John, age -> 30, salary -> 50000}|{name:John,age:30,salary:50000 -> null}   |
# |id:1,name:Alice,value:100       |{id -> 1, name -> Alice, value -> 100}    |{id:1,name:Alice,value:100 -> null}       |
# |date:2023-01-01,amount:100.5,category:expense|{date -> 2023-01-01, amount -> 100.5, category -> expense}|{date:2023-01-01,amount:100.5,category:expense -> null}|
# |null                            |null                                      |null                                      |
# +--------------------------------+------------------------------------------+------------------------------------------+
# Пример с разными разделителями
df = spark.createDataFrame([
    ("name=John|age=30|salary=50000",),
    ("id=1|name=Alice|value=100",)
], ["text_data"])
df.select(
    "text_data",
    str_to_map("text_data", "|", "=").alias("map")
).show(truncate=False)
 Примечания
- Если текст NULL, возвращается NULL
 - Если разделители не указаны, используются значения по умолчанию
 - Для создания карты из массивов используйте 
map_from_arrays() - Для получения ключей карты используйте 
map_keys() - Для получения значений карты используйте 
map_values()