【问题标题】:How to sort by column in descending order in Spark SQL?如何在 Spark SQL 中按列降序排序?
【发布时间】:2015-07-31 16:39:25
【问题描述】:

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

【问题讨论】:

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


【解决方案1】:

您也可以通过导入 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)

【讨论】:

  • 当您按所有列升序排序时,asc 关键字不是必需的:..orderBy("col1", "col2")
【解决方案2】:

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

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

请注意 $.desc 内的 sort 用于对结果进行排序的列。

【讨论】:

  • import org.apache.spark.sql.functions._import sqlContext.implicits._ 还为您提供了很多不错的功能。
  • @Vedom:显示语法错误:$ 符号处的df.sort($"Time1", $"Time2".desc) SyntaxError: invalid syntax
  • @kaks,需要如上所述导入函数/隐式以避免该错误
【解决方案3】:

仅限 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

【讨论】:

  • 问题标有 scala 标签,但此答案仅适用于 python,因为此语法和函数签名仅适用于 python。
【解决方案4】:
import org.apache.spark.sql.functions.desc

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

【讨论】:

  • 这是@AmitDubey 3 年前的重复答案。应该删除有利于那个。
【解决方案5】:
df.sort($"ColumnName".desc).show()

【讨论】:

    【解决方案6】:

    在 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();
    

    在哪里

    • spark -> SparkSession
    • salary -> GlobalTemp 视图。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-14
      • 2019-07-18
      • 1970-01-01
      • 2016-04-03
      • 2016-11-30
      • 1970-01-01
      • 2021-07-11
      相关资源
      最近更新 更多