2015-12-29 2 views
13

Я использую pyspark (Python 2.7.9/Spark 1.3.1) и имею DataFrame GroupObject, который мне нужно отфильтровать & в порядке убывания. Попытка добиться этого через этот кусок кода.Spark DataFrame groupBy и сортировать по убыванию (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.й).

0

Подобно выше - но вроде на переименовал имя столбца (псевдоним):

from pyspark.sql.functions import desc 

df=df.count().withColumnRenamed("count", "newColName")\ 
     .filter("`count` >= 10") 
     .sort(desc("newColName")) 
df.show() 
Смежные вопросы