简体   繁体   中英

Sort Spark Dataframe with two columns in different order

Let's say, I have a table like this:

A,B
2,6
1,2
1,3
1,5
2,3

I want to sort it with ascending order for column A but within that I want to sort it in descending order of column B , like this:

A,B
1,5
1,3
1,2
2,6
2,3

I have tried to use orderBy("A", desc("B")) but it gives an error.

How should I write the query using dataframe in Spark 2.0?

Use Column method desc , as shown below:

val df = Seq(
  (2,6), (1,2), (1,3), (1,5), (2,3)
).toDF("A", "B")

df.orderBy($"A", $"B".desc).show
// +---+---+
// |  A|  B|
// +---+---+
// |  1|  5|
// |  1|  3|
// |  1|  2|
// |  2|  6|
// |  2|  3|
// +---+---+

desc is the correct method to use, however, not that it is a method in the Columnn class. It should therefore be applied as follows:

df.orderBy($"A", $"B".desc)

$"B".desc returns a column so "A" must also be changed to $"A" (or col("A") if spark implicits isn't imported).

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM