如何在Spark SQL中按降序排列?

时间:2015-05-19 17:45:57

标签: scala apache-spark apache-spark-sql

我尝试了df.orderBy("col1").show(10)但它按升序排序。 df.sort("col1").show(10)也按降序排序。我查看了stackoverflow,我发现的答案都已过时或referred to RDDs。我想在spark中使用原生数据框。

6 个答案:

答案 0 :(得分:163)

您还可以通过导入spark sql函数

对列进行排序
import org.apache.spark.sql.functions._
df.orderBy(asc("col1"))

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

导入sqlContext.implicits ._

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

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

答案 1 :(得分:66)

org.apache.spark.sql.DataFrame sort方法:

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

注意$内的.descsort,以便对列进行排序。

答案 2 :(得分:20)

仅限PySpark

我想在PySpark中做同样的事情时遇到过这篇文章。最简单的方法是只添加参数ascending = False:

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

参考:http://spark.apache.org/docs/2.1.0/api/python/pyspark.sql.html#pyspark.sql.DataFrame.orderBy

答案 3 :(得分:7)

import org.apache.spark.sql.functions.desc

df.orderBy(desc("columnname1"),desc("columnname2"),asc("columnname3"))

答案 4 :(得分:6)

df.sort($"ColumnName".desc).show()

答案 5 :(得分:2)

对于Java:

如果我们使用DataFrames,则在应用联接(这里是内部联接)时,我们可以在每个DF中选择不同的元素后(在ASC中)进行排序:

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

其中e_id是在ASC中按薪金排序时应用联接的列。

此外,我们可以将Spark SQL用作:

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

其中

  • 火花-> SparkSession
  • 工资-> GlobalTemp视图。