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

Ved*_*dom 110 scala apache-spark apache-spark-sql

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

Ami*_*bey 184

您还可以通过导入spark sql函数对列进行排序

import org.apache.spark.sql.functions._
df.orderBy(asc("col1"))
Run Code Online (Sandbox Code Playgroud)

要么

import org.apache.spark.sql.functions._
df.sort(desc("col1"))
Run Code Online (Sandbox Code Playgroud)

导入sqlContext.implicits._

import sqlContext.implicits._
df.orderBy($"col1".desc)
Run Code Online (Sandbox Code Playgroud)

要么

import sqlContext.implicits._
df.sort($"col1".desc)
Run Code Online (Sandbox Code Playgroud)


Ved*_*dom 77

它是在org.apache.spark.sql.DataFramesort的方法:

df.sort($"col1", $"col2".desc)
Run Code Online (Sandbox Code Playgroud)

注意$.descsort列内部对结果进行排序.

  • `import org.apache.spark.sql.functions._`和`import sqlContext.implicits._`也为你提供了很多不错的功能. (5认同)
  • @Vedom:显示语法错误:`df.sort($"Time1",$"Time2".desc)SyntaxError:$符号处的语法无效` (4认同)

Nic*_*aro 28

PySpark中最简单的方法是添加参数ascending = False:

df.orderBy("col1", ascending=False).show(10)
Run Code Online (Sandbox Code Playgroud)

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

  • 这个问题用scala标记标记,但这个答案仅适用于python,因为这个语法和函数签名都是python-only. (6认同)

小智 8

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

df.orderBy(desc("columnname1"),desc("columnname2"),asc("columnname3"))
Run Code Online (Sandbox Code Playgroud)


小智 6

df.sort($"ColumnName".desc).show()
Run Code Online (Sandbox Code Playgroud)