collect_list(col)
Описание
Функция collect_list()
собирает все значения столбца в массив, сохраняя дубликаты. Это агрегатная функция, которая должна использоваться с groupBy()
.
Параметры
col
: Column - столбец, значения которого нужно собрать в массив
Возвращаемое значение
Array - массив всех значений столбца
Пример использования
from pyspark.sql.functions import collect_list
from pyspark.sql import SparkSession
# Создаем SparkSession
spark = SparkSession.builder.appName("collect_list_example").getOrCreate()
# Создаем DataFrame
data = [
("A", 1),
("A", 2),
("A", 2),
("B", 3),
("B", 4),
("B", 4)
]
df = spark.createDataFrame(data, ["group", "value"])
# Используем collect_list для сбора значений в массив
result = df.groupBy("group").agg(
collect_list("value").alias("values_list")
).show(truncate=False)
# Результат:
# +-----+------------+
# |group|values_list |
# +-----+------------+
# |A |[1, 2, 2] |
# |B |[3, 4, 4] |
# +-----+------------+
# Пример с разными типами данных
data = [
("A", "x"),
("A", "y"),
("A", "x"),
("B", "z"),
("B", "w"),
("B", "z")
]
df = spark.createDataFrame(data, ["group", "value"])
result = df.groupBy("group").agg(
collect_list("value").alias("values_list")
).show(truncate=False)
Примечания
- Функция сохраняет дубликаты значений
- Порядок элементов в массиве не гарантирован
- Для удаления дубликатов используйте
collect_set()
- Для сортировки массива используйте
array_sort()
- Для фильтрации массива используйте
filter()