如何在 Spark SQL 中按列降序排序?
How to sort by column in descending order in Spark SQL?
我试过 df.orderBy("col1").show(10)
但它按升序排序。 df.sort("col1").show(10)
也按升序排序。我查看了 Whosebug,发现的答案都已过时或 referred to RDDs。我想在 spark 中使用本机数据框。
它在 org.apache.spark.sql.DataFrame
中用于 sort
方法:
df.sort($"col1", $"col2".desc)
请注意 sort
内的 $
和 .desc
作为结果排序依据的列。
您还可以通过导入 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)
df.sort($"ColumnName".desc).show()
仅限 PySpark
我想在 PySpark 中做同样的事情时遇到了这个 post。最简单的方法是只添加参数 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
在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
- 工资 -> GlobalTemp 视图。
import org.apache.spark.sql.functions.desc
df.orderBy(desc("columnname1"),desc("columnname2"),asc("columnname3"))
我试过 df.orderBy("col1").show(10)
但它按升序排序。 df.sort("col1").show(10)
也按升序排序。我查看了 Whosebug,发现的答案都已过时或 referred to RDDs。我想在 spark 中使用本机数据框。
它在 org.apache.spark.sql.DataFrame
中用于 sort
方法:
df.sort($"col1", $"col2".desc)
请注意 sort
内的 $
和 .desc
作为结果排序依据的列。
您还可以通过导入 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)
df.sort($"ColumnName".desc).show()
仅限 PySpark
我想在 PySpark 中做同样的事情时遇到了这个 post。最简单的方法是只添加参数 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
在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
- 工资 -> GlobalTemp 视图。
import org.apache.spark.sql.functions.desc
df.orderBy(desc("columnname1"),desc("columnname2"),asc("columnname3"))