亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

Spark DataFrame按某列降序排序

標簽:
Spark

我的原创地址:

+----+----+----+
|col1|col2|col3|
+----+----+----+
|   7|   2|   3|
|   1|   8|   6|
|   4|   5|   9|
+----+----+----+

2、默认的升序排序效果(按col2排序,以下都是)

df.orderBy("col2").show()
+----+----+----+
|col1|col2|col3|
+----+----+----+
|   7|   2|   3|
|   4|   5|   9|
|   1|   8|   6|
+----+----+----+

3、降序方法一

df.orderBy(-df("col2")).show
+----+----+----+
|col1|col2|col3|
+----+----+----+
|   1|   8|   6|
|   4|   5|   9|
|   7|   2|   3|
+----+----+----+

这个方法在前面加上负号-即可,看起来挺简单的,但是其实这种方法不能在第一次构建df的时候进行排序,必须先创建好一个df,再用创建好的df生成新的df。

4、降序方法二

下面的方法和方法一是一样的

df.orderBy(df("col2").desc).show
+----+----+----+
|col1|col2|col3|
+----+----+----+
|   1|   8|   6|
|   4|   5|   9|
|   7|   2|   3|
+----+----+----+

5、降序方法三

import org.apache.spark.sql.functions._
df.orderBy(desc("col2")).show
+----+----+----+
|col1|col2|col3|
+----+----+----+
|   1|   8|   6|
|   4|   5|   9|
|   7|   2|   3|
+----+----+----+

这种方法是我比较喜欢的,因为在第一次创建的时候就可以排序了,且使用起来也很简洁。
可以使用下面的代码测试一下

spark.createDataFrame(data).toDF("col1", "col2", "col3").orderBy(desc("col2")).show

6、降序方法四

下面的方法和方法三是一样的,由于结果一样,就不贴上了

df.orderBy(-col("col2")).show

7、降序方法五

下面的方法和方法四是一样的,由于结果一样,就不贴上了

df.orderBy(col("col2").desc).show

8、sort函数

sort函数和orderBy用法和结果是一样的,因为orderBy和sql语法里的order by名字一样,所以我首先想到这个方法,就把orderBy放在前面介绍了(sort比orderBy短一点哈~)

df.sort(desc("col2")).show

附录

package com.dkl.leanring.spark.dfimport org.apache.spark.sql.SparkSessionobject DfSortDesc {  def main(args: Array[String]): Unit = {    val spark = SparkSession.builder().appName("DfSortDesc").master("local").getOrCreate()    val data = Array((7, 2, 3), (1, 8, 6), (4, 5, 9))    val df = spark.createDataFrame(data).toDF("col1", "col2", "col3")    //打印 df
    df.show()    // 默认的升序
    df.orderBy("col2").show()    //降序方法一
    df.orderBy(-df("col2")).show    //降序方法二同上
    df.orderBy(df("col2").desc).show    import org.apache.spark.sql.functions._    //降序方法三
    df.orderBy(desc("col2")).show    //测试方法三
    spark.createDataFrame(data).toDF("col1", "col2", "col3").orderBy(desc("col2")).show    //降序方法四
    df.orderBy(-col("col2")).show    //降序方法五
    df.orderBy(col("col2").desc).show    //sort函数和orderBy用法和结果是一样的
    df.sort(desc("col2")).show
    spark.stop()

  }

}



作者:董可伦
链接:https://www.jianshu.com/p/8939d24dca8d


點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消