2017-10-20 6 views
2

spark를 사용하여 CSV 파일에서 내림차순을 받고 정수로 반올림하고 싶습니다. zhvi.평균을 내림차순으로 지정 하시겠습니까?

그러나 코드 끝에서 sort(desc("Zhvi"))을 시도해보십시오. 그것은 항상 저에게 오류를줍니다. 내 결과

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

및 부품 :

+-----+------------------+ 
|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| 

도움이 될 수 있습니다 어느 하나?

+0

그룹화 된 평균 데이터를 정렬합니다 (desc ("Zhvi")). ? – Suresh

답변

0

사용하여 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

OP에서 DataFrame API를 사용하고 솔루션이 존재하는 이유는 누구입니까? –

+0

@JacekLaskowski 주로 전직 DBA처럼 훨씬 편리합니다. 단점이 있습니까? DataFrame API는 SQL에 비해 더 선호 할 수 있습니까? – MaxU

+0

유일한 단점은 OP가 비 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| 
+-----+------------------+ 
또 다른 문제 일 수 있습니다, 당신이 "종류 (내림차순 ("Zhvi을 "))"사용하는 것 같다

,

, 열 이름이 avg 함수 뒤에 변경됨 "| 상태 | 평균 (Zhvi) |"

감사합니다.