Spark DataFrame GROUP BY et trier dans l'ordre décroissant (pyspark)

j'utilise pyspark (Python 2.7.9/Spark 1.3.1) et j'ai un objet de groupe dataframe que je dois filtrer et trier dans l'ordre décroissant. Essaie de l'atteindre par le biais de ce morceau de code.

group_by_dataframe.count().filter("`count` >= 10").sort('count', ascending=False)

mais il lance l'erreur suivante.

sort() got an unexpected keyword argument 'ascending'
23
demandé sur rclakmal 2015-12-29 18:57:37

3 réponses

In PySpark 1.3 sort la méthode ne prend pas le paramètre Ascendant. Vous pouvez utiliser desc méthode à la place:

from pyspark.sql.functions import col

(group_by_dataframe
    .count()
    .filter("`count` >= 10")
    .sort(col("count").desc()))

ou desc fonction:

from pyspark.sql.functions import desc

(group_by_dataframe
    .count()
    .filter("`count` >= 10")
    .sort(desc("count"))

les deux méthodes peuvent être utilisées avec une étincelle >= 1,3 (incluant L'étincelle 2.x).

48
répondu zero323 2017-03-31 18:08:53

Utiliser orderBy:

group_by_dataframe.count().filter("`count` >= 10").orderBy('count', ascending=False)

http://spark.apache.org/docs/2.0.0/api/python/pyspark.sql.html

18
répondu Henrique Florêncio 2017-03-08 17:52:06

similaire à ce qui précède - mais triez sur le nom de colonne renommé (alias):

 from pyspark.sql.functions import desc

 df=df.count().withColumnRenamed("count", "newColName")\
      .filter("`count` >= 10")
      .sort(desc("newColName"))
 df.show()
1
répondu Grant Shannon 2017-11-23 14:30:28