web-dev-qa-db-ger.com

Spark DataFrame groupBy und sortieren in absteigender Reihenfolge (Pyspark)

Ich verwende Pyspark (Python 2.7.9/Spark 1.3.1) und habe ein Datenrahmen-Gruppenobjekt, das ich in absteigender Reihenfolge filtern und sortieren muss. Versuchen, es über dieses Stück Code zu erreichen.

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

Aber es wird der folgende Fehler ausgegeben.

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

In PySpark 1.3 akzeptiert die Methode sort keine aufsteigenden Parameter. Sie können stattdessen die Methode desc verwenden:

from pyspark.sql.functions import col

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

oder desc Funktion:

from pyspark.sql.functions import desc

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

Beide Methoden können mit Spark> = 1.3 (einschließlich Spark 2.x)) verwendet werden.

102
zero323

Verwenden Sie 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

sie können groupBy und orderBy auch wie folgt verwenden

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