Spark DataFrame grubu: Azalan düzende sıralama ve sıralama (pyspark)


90

Pyspark (Python 2.7.9 / Spark 1.3.1) kullanıyorum ve azalan düzende filtrelemem ve sıralamam gereken bir veri çerçevesi GroupObject sahibiyim. Bu kod parçasıyla bunu başarmaya çalışıyorum.

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

Ancak şu hatayı atıyor.

sort() got an unexpected keyword argument 'ascending'

Yanıtlar:


173

PySpark 1.3'te sortyöntem artan parametre almaz. Bunun descyerine yöntemi kullanabilirsiniz :

from pyspark.sql.functions import col

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

veya descişlev:

from pyspark.sql.functions import desc

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

Her iki yöntem de Spark> = 1.3 (Spark 2.x dahil) ile kullanılabilir.



25

Şimdiye kadarki en uygun yol bunu kullanmak:

df.orderBy(df.column_name.desc())

Özel ithalat gerektirmez.


1
Kredi Daniel Haviv bana böyle gösterdi Databricks bir Çözüm Mimarı.
gdoron Monica'yı

1
açık ara en iyi cevap burada.
born_naked

Bunun yerine kabul edilen cevap olmalıdır. Çok daha basit ve paketlere güvenmiyor (belki o sırada mevcut değildi)
Anonim

Bu cevabı gerçekten beğendim ama kıvılcım 3.0.0'da sayımla benim için çalışmadı. Sanırım sayım bir sayıdan çok bir fonksiyondur. TypeError: Geçersiz bağımsız değişken, dize veya sütun değil: <bağlı yöntem DataFrame.count of DataFrame [...]> <sınıf 'yöntem'> türünden. Sütun değişmezleri için 'lit', 'dizi', 'struct' veya 'create_map' işlevini kullanın.
Armando

5

Pyspark 2.4.4'te

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

2) from pyspark.sql.functions import desc
   group_by_dataframe.count().filter("`count` >= 10").orderBy('count').sort(desc('count'))

1) 'de içe aktarmaya gerek yok ve 1) kısa ve okunması kolay, bu
yüzden 1) yerine 2'yi tercih ediyorum


4

groupBy ve orderBy'yi aşağıdaki gibi kullanabilirsiniz

dataFrameWay = df.groupBy("firstName").count().withColumnRenamed("count","distinct_name").sort(desc("count"))
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.