conjunto_coletar
Coleta os valores de uma coluna em um conjunto, eliminando duplicados, e retorna esse conjunto de objetos. Essa função não é determinística, pois a ordem dos resultados coletados depende da ordem das linhas, que pode ser não determinística após quaisquer operações de embaralhamento.
Sintaxe
from pyspark.sql import functions as sf
sf.collect_set(col)
Parâmetros
Parâmetro | Tipo | Descrição |
|---|---|---|
|
| A coluna de destino na qual a função é calculada. |
Devoluções
pyspark.sql.ColumnUm novo objeto Column representando um conjunto de valores coletados, excluindo duplicados.
Exemplos
Exemplo 1 : Coletar valores de um DataFrame e ordenar o resultado em ordem crescente.
from pyspark.sql import functions as sf
df = spark.createDataFrame([(1,), (2,), (2,)], ('value',))
df.select(sf.sort_array(sf.collect_set('value')).alias('sorted_set')).show()
+----------+
|sorted_set|
+----------+
| [1, 2]|
+----------+
Exemplo 2 : Coletar valores de um DataFrame e ordenar o resultado em ordem decrescente.
from pyspark.sql import functions as sf
df = spark.createDataFrame([(2,), (5,), (5,)], ('age',))
df.select(sf.sort_array(sf.collect_set('age'), asc=False).alias('sorted_set')).show()
+----------+
|sorted_set|
+----------+
| [5, 2]|
+----------+
Exemplo 3 : Coletar valores de um DataFrame com várias colunas e ordenar o resultado.
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_set('id')).alias('sorted_set'))
df.orderBy(sf.desc("name")).show()
+----+----------+
|name|sorted_set|
+----+----------+
|John| [1, 2]|
| Ana| [3]|
+----+----------+