2015-12-29 20 views
13

Ich benutze pyspark (Python 2.7.9/Spark 1.3.1) und haben ein Datenobjekt GroupObject, die ich filter & in absteigender Reihenfolge sortieren müssen. Versuchen, es über dieses Stück Code zu erreichen.Spark DataFrame groupBy und Sortieren in absteigender Reihenfolge (pyspark)

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

Aber es wirft den folgenden Fehler.

sort() got an unexpected keyword argument 'ascending' 

Antwort

20

In PySpark 1.3 sort Verfahren dauert nicht Parameter steigend. Sie können desc Methode verwenden statt:

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 mit Spark> = 1,3 (einschließlich Funken 2.x) verwendet werden.

0

Ähnlich wie oben - aber Art auf umbenannte Spaltennamen (Pseudonym):

from pyspark.sql.functions import desc 

df=df.count().withColumnRenamed("count", "newColName")\ 
     .filter("`count` >= 10") 
     .sort(desc("newColName")) 
df.show() 
Verwandte Themen