首页 文章

Spark DataFrame groupBy并按降序排序(pyspark)

提问于
浏览
30

我正在使用pyspark(Python 2.7.9 / Spark 1.3.1)并且有一个数据帧GroupObject,我需要按降序对其进行过滤和排序 . 试图通过这段代码实现它 .

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

但它会引发以下错误 .

sort() got an unexpected keyword argument 'ascending'

2 回答

  • 61

    在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"))
    

    两种方法都可以与Spark> = 1.3(包括Spark 2.x)一起使用 .

  • 23

    使用 orderBy

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

    http://spark.apache.org/docs/2.0.0/api/python/pyspark.sql.html

相关问题