2015-12-29 247 views
13

我正在使用pyspark(Python 2.7.9/Spark 1.3.1)并且有一个数据框GroupObject,我需要按降序排列&排序。试图通过这段代码实现它。Spark DataFrame组按照降序排列(pyspark)

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

但它会引发以下错误。

sort() got an unexpected keyword argument 'ascending' 

回答

20

在PySpark 1.3中sort方法不带上升参数。可以使用desc方法代替:

from pyspark.sql.functions import col 

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

desc功能:

from pyspark.sql.functions import desc 

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

这两种方法都可以与用火花> = 1.3(包括火花2.x的)一起使用。

0

上述类似 - 但排序上重新命名为列名(别名):

from pyspark.sql.functions import desc 

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