首页 文章

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

提问于
浏览
81

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

6 回答

  • 1
    import org.apache.spark.sql.functions.desc
    
    df.orderBy(desc("columnname1"),desc("columnname2"),asc("columnname3"))
    
  • 6

    对于 sort 方法,它在org.apache.spark.sql.DataFrame中:

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

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

  • 138

    在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查看 .

  • 20

    最简单的方法是添加参数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

  • 60

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

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

    要么

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

    importing sqlContext.implicits._

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

    要么

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

相关问题