2015-12-29 25 views
13

Sto usando pyspark (Python 2.7.9/Spark 1.3.1) e ho un frameObject dataframe che ho bisogno di filtrare & in ordine decrescente. Cercando di raggiungerlo tramite questo pezzo di codice.Spark DataFrame groupBy e ordina in ordine decrescente (pyspark)

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

Ma genera il seguente errore.

sort() got an unexpected keyword argument 'ascending' 

risposta

20

In PySpark 1.3 sort metodo non prende in senso crescente parametro. È possibile utilizzare desc metodo invece:

from pyspark.sql.functions import col 

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

o desc funzione:

from pyspark.sql.functions import desc 

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

Entrambi i metodi possono essere utilizzati con con Spark> = 1.3 (compreso Spark 2.x).

0

simile al precedente - ma una sorta sulla ri-nominato nome della colonna (alias):

from pyspark.sql.functions import desc 

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