2017-10-20 32 views
2

Je veux obtenir un ordre décroissant et arrondir à nombre entier zhvi à partir d'un fichier csv en utilisant étincelle.Comment mettre les moyennes dans l'ordre décroissant?

Cependant, lorsque j'essaie sort(desc("Zhvi")) à la fin de mon code. Ça me donne toujours une erreur.

from pyspark.sql.functions import col, desc 
stateByZhvi = home.select('State','Zhvi').groupBy((col("State"))).avg("Zhvi").show() 

et une partie de mon résultat:

+-----+------------------+ 
|State|   avg(Zhvi)| 
+-----+------------------+ 
| AZ|246687.01298701297| 
| SC|143188.94736842104| 
| LA|159991.74311926606| 
| MN|236449.40239043825| 
| NJ| 367156.5637065637| 
| DC| 586109.5238095238| 
| OR| 306646.3768115942| 
| VA| 282764.4986449864| 

Tout le monde peut aider?

+0

vous trier (desc ("Zhvi")) sur les données moyennes groupées. ? – Suresh

Répondre

0

Qu'en est-il en utilisant SQL:

home.createOrReplaceTempView("home") 

spark.sql("select State, round(avg(Zhvi)) as avg_Zhvi from home group by State order by 2 desc").show() 
+0

Pourquoi quelqu'un retournerait-il à SQL si l'OP utilisait l'API DataFrame et qu'une solution existe pour cela ?! –

+0

@JacekLaskowski, principalement parce que c'est beaucoup plus pratique pour moi que pour l'ex-DBA. Y a-t-il des inconvénients? L'API DataFrame est-elle plus préférable à SQL? – MaxU

+0

Le seul inconvénient est que l'OP a posé une question sur une solution non SQL/DataFrame. –

2
// input dataframe 
+-----+------------------+ 
|State|    avg| 
+-----+------------------+ 
| AZ|246687.01298701297| 
| SC|143188.94736842104| 
| LA|159991.74311926606| 
+-----+------------------+ 

df.orderBy(desc("avg")).show() 

// 
+-----+------------------+ 
|State|    avg| 
+-----+------------------+ 
| AZ|246687.01298701297| 
| LA|159991.74311926606| 
| SC|143188.94736842104| 
+-----+------------------+ 

Il pourrait y avoir une autre question, il semble que vous utilisez "tri (desc (" Zhvi "))",

cependant, la colonne nom changé après la fonction avg, "| State | avg (Zhvi) |"

Merci