利用Spark RDD实现分组并排序

摘 要

本文将介绍利用Spark RDD实现分组并排序。

前言

被朋友问到Spark分组并排序怎么实现?当时,本人觉得So-Easy的问题。因为在MapReduce也会有类似的需求,相较于MapReduce,那Spark的实现简直简单爆了。but,依然阴沟翻船,具体思路是没有错的,但在纸上描述代码的时候出现了错误,这其实就是归根于用IDE的代价吧。好多东西,不需要刻意的去记忆。反思... ...所以在ide上手动实现了一遍Spark RDD 分组并排序,以示警戒。

思路

思路很简单,就是按照key分组,并且分组完成后将其每组内部进行分组排序。涉及到的算子有两个:groupByKey & mapValues

代码实现

object RDDTest {
  def main(args: Array[String]): Unit = {
    val conf = new SparkConf().setMaster("local").setAppName("RDDTest")
    val sc = new SparkContext(conf)
    val rdd1 = sc.parallelize(List(("a",1),("a",2),("a",3),("a",4),("b",5),("b",6),("b",7),("b",8)))
    //根据key分组并内部降序
    rdd1.groupByKey().mapValues(f=>{
      //分组内部排序的两种方式
      f.toList.sorted.reverse
     // f.toList.sortWith(_>_)
    }).foreach(println)
    sc.stop()
  }
}
  • 利用Spark RDD实现分组并排序已关闭评论
  • 329 views
  • A+
所属分类:未分类
avatar