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

我试过 df.orderBy("col1").show(10),但它是按升序排序的。df.sort("col1").show(10)也按升序排序。我查看了 stackoverflow,发现所有的答案都已经过时或者是 称为 RDD。我想使用本地数据框架在火花。

385846 次浏览

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

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

请注意 sort中的 $.desc,以便按照列对结果进行排序。

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

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

或者

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

导入 sqlContext. 包含

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

或者

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

PySpark only

当我想在 PySpark 中做同样的事情时,我偶然发现了这篇文章。最简单的方法是添加参数  上升 = 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

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

哪里

  • 星火-> 星火会议
  • 工资-> GlobalTemp 视图。
import org.apache.spark.sql.functions.desc


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