web-dev-qa-db-fra.com

Spark DataFrame groupBy et trie par ordre décroissant (pyspark)

J'utilise pyspark (Python 2.7.9/Spark 1.3.1) et dispose d'un GroupObject de structure de données que je dois filtrer et trier dans l'ordre décroissant. Essayer de le réaliser via ce morceau de code.

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

Mais il jette l'erreur suivante.

sort() got an unexpected keyword argument 'ascending'
55
rclakmal

Dans PySpark 1.3, la méthode sort ne prend pas de paramètre croissant. Vous pouvez utiliser la méthode desc à 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 Spark> = 1.3 (y compris Spark 2.x).

102
zero323

Utilisez 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

51

vous pouvez utiliser groupBy et orderBy comme suit aussi

dataFrameWay = df.groupBy("firstName").count().withColumnRenamed("count","distinct_name").sort(desc("count"))
0
Narendra Maru