Spark 二次排序

Spark 二次排序

废话不多说直接上代码

定义二次排序的key

class SecondSortKey(val first: Int, val second: Int) 
    extends Ordered[SecondSortKey] with Serializable {
  
  def compare(that: SecondSortKey): Int = {
    if(this.first - that.first != 0) {
      this.first - that.first
    } else {
      this.second - that.second
    }
  }
  
}

二次排序处理过程

object SecondSort4LXG {

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

    val testData = Seq("40 20",
        "40 10",
        "40 30",
        "40 5 ",
        "30 30",
        "30 20",
        "30 10",
        "30 40",
        "50 20",
        "50 50",
        "50 10",
        "50 60")

    val testRdd: RDD[String] = sc.parallelize(testData, 4)
    val pairs = testRdd.map { line => (
        new SecondSortKey(line.split(" ")(0).trim.toInt, line.split(" ")(1).trim.toInt),//封装自定义key
        line)
    }
    val sortedPairs = pairs.sortByKey()
    val sortedLines = sortedPairs.map(sortedPair => sortedPair._2)

    sortedLines.foreach { sortedLine => println(sortedLine) }

    sc.stop()
}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值