比方说,我有一张这样的桌子:
A,B
2,6
1,2
1,3
1,5
2,3
我想对列A
进行升序排序,但是在其中我想对列B
进行降序排序,就像这样:
A,B
1,5
1,3
1,2
2,6
2,3
我尝试使用orderBy("A", desc("B"))
,但它给出了一个错误。
如何在Spark 2.0中使用数据框编写查询?
答案 0 :(得分:7)
使用列方法desc,如下所示:
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|
// +---+---+
答案 1 :(得分:4)
desc
是正确使用的方法,但是,不是Columnn
类中的方法。因此,应按以下方式应用它:
df.orderBy($"A", $"B".desc)
$"B".desc
返回一列,因此"A"
也必须更改为$"A"
(如果未导入spark隐式,则必须更改为col("A")
)。