2015-12-29 9 views
13

Używam pyspark (Python 2.7.9/Spark 1.3.1) i mam ramkę danych GroupObject, którą muszę przefiltrować w porządku malejącym według sortowania &. Próbuje to osiągnąć za pomocą tego kawałka kodu.Spark DataFrame groupBy i sortuj w porządku malejącym (pyspark)

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

Ale powoduje to następujący błąd.

sort() got an unexpected keyword argument 'ascending' 

Odpowiedz

20

W PySpark 1,3 sort metoda nie bierze rosnąco parametr. Można użyć desc sposób zamiast:

from pyspark.sql.functions import col 

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

lub desc funkcję:

from pyspark.sql.functions import desc 

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

Obie metody mogą być używana w Spark> = 1,3 (w tym Spark 2.x).

0

Podobnie jak wyżej - ale porządek na ponowne nazwie nazwa kolumny (alias):

from pyspark.sql.functions import desc 

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