自定义排序 IV 使用元组排序

package com.ws.demo
import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}
/**
  * 自定义排序4 ,利用元组排序
  */
object CustomSort4 {

  def main(args: Array[String]): Unit = {
    val conf = new SparkConf().setAppName("CustomSort4").setMaster("local[4]")

    val sc = new SparkContext(conf)

    val data = Array("ws 18 150", "tt 19 145", "nn 20 130", "bb 16 120", "cb 19 150")

    val dataRdd: RDD[String] = sc.parallelize(data)

    //切数据
    val dataMapRDD: RDD[(String,Int,Int)] = dataRdd.map(line => {
      val lineArr = line.split(" ")
      val name = lineArr(0)
      val age = lineArr(1).toInt
      val score = lineArr(2).toInt
      (name,age,score)
    })

    //排序,元组内部也实现了排序规则 ,先使用第一个参数对比排序;如果相等,再使用第二个参数对比排序。
    val sort: RDD[(String, Int, Int)] = dataMapRDD.sortBy(t =>(-t._3,t._2))

    println(sort.collect().toBuffer)

    sc.stop()
  }
}

结果如下 :

ArrayBuffer((ws,18,150), (cb,19,150), (tt,19,145), (nn,20,130), (bb,16,120))

猜你喜欢

转载自blog.csdn.net/bb23417274/article/details/82938216