Pular para o conteúdo principal

lista_coletar

Coleta os valores de uma coluna em uma lista, mantendo os duplicados, e retorna essa lista de objetos. A função não é determinística, pois a ordem dos resultados coletados depende da ordem das linhas, que possivelmente se torna não determinística após operações de embaralhamento.

Sintaxe

Python
from pyspark.sql import functions as sf

sf.collect_list(col)

Parâmetros

Parâmetro

Tipo

Descrição

col

pyspark.sql.Column ou nome da coluna

A coluna de destino na qual a função é calculada.

Devoluções

pyspark.sql.ColumnUm novo objeto Column representando uma lista de valores coletados, incluindo valores duplicados.

Exemplos

Exemplo 1 : Coletar valores de um DataFrame e ordenar o resultado em ordem crescente.

Python
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()
Output
+-----------+
|sorted_list|
+-----------+
| [1, 2, 2]|
+-----------+

Exemplo 2 : Coletar valores de um DataFrame e ordenar o resultado em ordem decrescente.

Python
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()
Output
+-----------+
|sorted_list|
+-----------+
| [5, 5, 2]|
+-----------+

Exemplo 3 : Coletar valores de um DataFrame com várias colunas e ordenar o resultado.

Python
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()
Output
+----+-----------+
|name|sorted_list|
+----+-----------+
|John| [1, 2]|
| Ana| [3]|
+----+-----------+