collect_list
Collecte les valeurs d'une colonne dans une liste, en conservant les doublons, et renvoie cette liste d'objets. La fonction est non déterministe, car l'ordre des résultats collectés dépend de l'ordre des lignes, qui peut devenir non déterministe après les Opérations de brassage.
Syntaxe
from pyspark.sql import functions as sf
sf.collect_list(col)
parameter
parameter | Type | Description |
|---|---|---|
|
| La colonne cible sur laquelle la fonction est calculée. |
Renvoie
pyspark.sql.Column: un nouvel objet Column représentant une liste de valeurs collectées, avec les valeurs en double incluses.
Exemples
Exemple 1 : Recueillir les valeurs d'un DataFrame et trier le résultat par ordre croissant
from pyspark.sql import functions as sf
df = spark.createDataFrame([(1,), (2,), (2,)], ('value',))
df.select(sf.sort_array(sf.collect_list('value')).alias('sorted_list')).show()
+-----------+
|sorted_list|
+-----------+
| [1, 2, 2]|
+-----------+
Exemple 2 : Collecter des valeurs d'un DataFrame et trier le résultat par ordre décroissant.
from pyspark.sql import functions as sf
df = spark.createDataFrame([(2,), (5,), (5,)], ('age',))
df.select(sf.sort_array(sf.collect_list('age'), asc=False).alias('sorted_list')).show()
+-----------+
|sorted_list|
+-----------+
| [5, 5, 2]|
+-----------+
Exemple 3 : Collecter les valeurs d'un DataFrame avec plusieurs colonnes et trier le résultat
from pyspark.sql import functions as sf
df = spark.createDataFrame([(1, "John"), (2, "John"), (3, "Ana")], ("id", "name"))
df = df.groupBy("name").agg(sf.sort_array(sf.collect_list('id')).alias('sorted_list'))
df.orderBy(sf.desc("name")).show()
+----+-----------+
|name|sorted_list|
+----+-----------+
|John| [1, 2]|
| Ana| [3]|
+----+-----------+