web-dev-qa-db-fra.com

Trier Spark Dataframe avec deux colonnes dans un ordre différent

Disons que j'ai un tableau comme celui-ci:

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

Je veux le trier par ordre croissant pour la colonne A mais à l'intérieur de cela, je veux le trier par ordre décroissant de la colonne B, comme ceci:

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

J'ai essayé d'utiliser orderBy("A", desc("B")) mais cela donne une erreur.

Comment dois-je écrire la requête à l'aide de dataframe dans Spark 2.0?

4
kello

Utilisez la méthode Column desc , comme indiqué ci-dessous:

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|
// +---+---+
8
Leo C

desc est la bonne méthode à utiliser, cependant, ce n'est pas une méthode de la classe Columnn. Il convient donc de l'appliquer comme suit:

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

$"B".desc Renvoie une colonne donc "A" Doit également être remplacé par $"A" (Ou col("A") if spark implicits isn ') t importé).