tags: description: Функция map_from_arrays()
создает карту из двух массивов: один содержит ключи, другой - соответствующие значения.
- map functions
map_from_arrays(keys, values)
Описание
Функция map_from_arrays()
создает карту из двух массивов: один содержит ключи, другой - соответствующие значения.
Параметры
keys
: Array - массив ключейvalues
: Array - массив значений
Возвращаемое значение
Map - карта, созданная из пар ключ-значение
Пример использования
from pyspark.sql.functions import map_from_arrays, array, lit
# Создаем DataFrame с массивами ключей и значений
df = spark.createDataFrame([
(["name", "age", "salary"], ["John", 30, 50000]),
(["id", "name", "value"], [1, "Alice", 100]),
(["date", "amount", "category"], ["2023-01-01", 100.5, "expense"]),
(None, None)
], ["keys", "values"])
# Создаем карту из массивов
df.select(
"keys",
"values",
map_from_arrays("keys", "values").alias("map_data")
).show(truncate=False)
# Результат:
# +------------------------+------------------------+------------------------------------------+
# |keys |values |map_data |
# +------------------------+------------------------+------------------------------------------+
# |[name, age, salary] |[John, 30, 50000] |{name -> John, age -> 30, salary -> 50000}|
# |[id, name, value] |[1, Alice, 100] |{id -> 1, name -> Alice, value -> 100} |
# |[date, amount, category]|[2023-01-01, 100.5, expense]|{date -> 2023-01-01, amount -> 100.5, category -> expense}|
# |null |null |null |
# +------------------------+------------------------+------------------------------------------+
# Пример с разными типами данных
df = spark.createDataFrame([
(["a", "b", "c"], [1, 2, 3]),
(["x", "y", "z"], [10.5, 20.0, 30.75])
], ["keys", "values"])
df.select(
"keys",
"values",
map_from_arrays("keys", "values").alias("map_data")
).show(truncate=False)
Примечания
- Если любой из массивов NULL, возвращается NULL
- Массивы должны иметь одинаковую длину
- Ключи должны быть уникальными
- Для создания карты из массива записей используйте
map_from_entries()
- Для получения записей карты используйте
map_entries()
- Для проверки наличия ключа используйте
map_contains_key()