web-dev-qa-db-ja.com

Spark DataFrame groupByおよび降順でソート(pyspark)

私は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'
55
rclakmal

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を含む)で使用できます。

102
zero323

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

51

次のようにgroupByとorderByを使用することもできます

dataFrameWay = df.groupBy("firstName").count().withColumnRenamed("count","distinct_name").sort(desc("count"))
0
Narendra Maru