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