web-dev-qa-db-fra.com

Comment trier par colonne en ordre décroissant dans Spark SQL?

J'ai essayé df.orderBy("col1").show(10) mais le tri a été effectué dans l'ordre croissant. df.sort("col1").show(10) effectue également un tri décroissant. J'ai regardé sur stackoverflow et les réponses que j'ai trouvées étaient toutes dépassées ou appelées RDDs . J'aimerais utiliser le cadre de données natif dans spark.

103
Vedom

C'est dans org.Apache.spark.sql.DataFrame pour la méthode sort:

_df.sort($"col1", $"col2".desc)
_

Notez _$_ et _.desc_ à l'intérieur de sort pour la colonne pour trier les résultats.

69
Vedom

Vous pouvez également trier la colonne en important les fonctions spark sql

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

Ou

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

importation de sqlContext.implicits ._

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

Ou

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

PySpark uniquement

Je suis tombé sur ce post lorsque je voulais faire la même chose dans PySpark. Le plus simple est d’ajouter le paramètre ascending = False:

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

Référence: http://spark.Apache.org/docs/2.1.0/api/python/pyspark.sql.html#pyspark.sql.DataFrame.orderBy

25
Nic Scozzaro
import org.Apache.spark.sql.functions.desc

df.orderBy(desc("columnname1"),desc("columnname2"),asc("columnname3"))
7
Nitya Yekkirala
df.sort($"ColumnName".desc).show()
6
Nilesh Shinde

Dans le cas de Java:

Si nous utilisons DataFrames, tout en appliquant des jointures (ici joint interne), nous pouvons trier (en ASC) après avoir sélectionné des éléments distincts dans chaque DF comme:

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

e_id est la colonne sur laquelle la jointure est appliquée tout en triant par salaire dans ASC.

De plus, nous pouvons utiliser Spark SQL comme:

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

  • spark -> SparkSession
  • salaire -> GlobalTemp View.
2
RPaul