wake-up-neo.com

Wie sortiere ich nach Spalten in absteigender Reihenfolge in Spark SQL?

Ich habe df.orderBy("col1").show(10) ausprobiert, aber es wurde in aufsteigender Reihenfolge sortiert. df.sort("col1").show(10) sortiert auch in absteigender Reihenfolge. Ich habe mir Stackoverflow angesehen und die Antworten, die ich gefunden habe, waren alle veraltet oder bezogen auf RDDs . Ich möchte den nativen Datenrahmen in Spark verwenden.

103
Vedom

Es ist in org.Apache.spark.sql.DataFrame für sort Methode:

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

Hinweis $ und .desc innerhalb sort für die Spalte, nach der die Ergebnisse sortiert werden sollen.

69
Vedom

Sie können die Spalte auch sortieren, indem Sie die spark sql-Funktionen importieren

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

Oder

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

Importieren von sqlContext.implicits ._

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

Oder

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

Nur PySpark

Ich bin auf diesen Beitrag gestoßen, als ich das gleiche in PySpark machen wollte. Der einfachste Weg ist, einfach den Parameter ascending = False hinzuzufügen:

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

Referenz: 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

Im Falle von Java:

Wenn wir DataFrames verwenden, können wir beim Anwenden von Joins (hier Inner Join) (in ASC) sortieren, nachdem wir in jedem Element DF als:

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

wo e_id ist die Spalte, auf die der Join angewendet wird, während in ASC nach Gehalt sortiert wird.

Wir können auch Spark SQL als:

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

wo

  • funke -> SparkSession
  • gehalt -> GlobalTemp View.
2
RPaul