Spark SQL에서 열을 내림차순으로 정렬하는 방법은 무엇입니까?


137

시도 df.orderBy("col1").show(10)했지만 오름차순으로 정렬되었습니다. df.sort("col1").show(10)또한 내림차순으로 정렬합니다. 나는 stackoverflow를 살펴 보았고 내가 찾은 대답은 모두 구식이거나 RDD라고 언급했다 . 스파크에서 기본 데이터 프레임을 사용하고 싶습니다.


2
"df.sort ("col1 "). show (10)도 오름차순으로 정렬합니다"
Josiah Yoder

이 솔루션은 나를 위해 완벽하게 작동 : stackoverflow.com/a/38575271/5957143을
ABC123

답변:


214

spark sql 함수를 가져 와서 열을 정렬 할 수도 있습니다.

import org.apache.spark.sql.functions._
df.orderBy(asc("col1"))

또는

import org.apache.spark.sql.functions._
df.sort(desc("col1"))

sqlContext.implicits._ 가져 오기

import sqlContext.implicits._
df.orderBy($"col1".desc)

또는

import sqlContext.implicits._
df.sort($"col1".desc)

또한 모든 열에서 오름차순으로 주문할 때 asc키워드는 필요하지 않습니다 ..orderBy("col1", "col2").
Dan

91

이 글은의 org.apache.spark.sql.DataFrame에 대한 sort방법 :

df.sort($"col1", $"col2".desc)

참고 $.desc내부 sort열의를 기준으로 결과를 정렬합니다.


5
import org.apache.spark.sql.functions._그리고 import sqlContext.implicits._또한 당신에게 좋은 기능을 많이 얻을.
David Griffin

4
@Vedom : 문법 오류를 보여줍니다 : df.sort($"Time1", $"Time2".desc) SyntaxError: invalid syntax$ 기호에서
kaks

@kaks, 오류를 피하기 위해 위에서 설명한대로 함수 / 내재를 가져와야합니다
Rimer

41

PySpark 만

PySpark에서 동일한 작업을 할 때이 게시물을 보았습니다. 가장 쉬운 방법은 매개 변수 ascending = False를 추가하는 것입니다.

df.orderBy("col1", ascending=False).show(10)

참조 : http://spark.apache.org/docs/2.1.0/api/python/pyspark.sql.html#pyspark.sql.DataFrame.orderBy


8
질문에는 스칼라 태그가 표시되어 있지만이 서명과 함수 서명은 파이썬 전용 이므로이 답변은 파이썬에만 해당됩니다.
Viacheslav Rodionov 's

1
감사! PySpark 버전을 찾고있었습니다.
arrkaye

12
import org.apache.spark.sql.functions.desc

df.orderBy(desc("columnname1"),desc("columnname2"),asc("columnname3"))

1
이것은 @AmitDubey의 3 년 전의 답변입니다. 그 중 하나를 위해 제거해야합니다.
javadba


2

Java의 경우 :

를 사용하는 경우 DataFrames조인 (여기서는 내부 조인)을 적용하는 동안 각 DF에서 고유 한 요소를 다음과 같이 선택한 후 ASC로 정렬 할 수 있습니다.

Dataset<Row> d1 = e_data.distinct().join(s_data.distinct(), "e_id").orderBy("salary");

여기서 e_idASC에서 급여별로 정렬되는 동안 결합이 적용되는 열이 있습니다.

또한 Spark SQL을 다음과 같이 사용할 수 있습니다.

SQLContext sqlCtx = spark.sqlContext();
sqlCtx.sql("select * from global_temp.salary order by salary desc").show();

어디

  • spark-> SparkSession
  • 급여-> GlobalTemp보기.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.