利用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()
  }
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏HansBug's Lab

3211: 花神游历各国

3211: 花神游历各国 Time Limit: 5 Sec  Memory Limit: 128 MB Submit: 1042  Solved: 381 ...

2665
来自专栏函数式编程语言及工具

SDP(9):MongoDB-Scala - data access and modeling

    MongoDB是一种文件型数据库,对数据格式没有硬性要求,所以可以实现灵活多变的数据存储和读取。MongoDB又是一种分布式数据库,与传统关系数据库不同...

3804
来自专栏木东居士的专栏

Spark源码解析:RDD

4193
来自专栏浪淘沙

spark求最受欢迎的老师的问题

963
来自专栏编程

MapReduce编程模型

通过WordCount程序理解MapReduce编程模型 WordCount,名为单词统计,功能是统计文本文件中每个单词出现的次数。例如下图中,有两个文本(蓝色...

2108
来自专栏人工智能LeadAI

Spark常用的算子以及Scala函数总结

上海站 | 高性能计算之GPU CUDA培训 4月13-15日 ? 三天密集式学习 快速带你晋级 阅读全文 > 正文共11264个字,7张图,预计阅读时间28...

54012
来自专栏LhWorld哥陪你聊算法

【Spark篇】---Spark中Action算子

Action类算子也是一类算子(函数)叫做行动算子,如foreach,collect,count等。Transformations类算子是延迟执行,Action...

1112
来自专栏Jed的技术阶梯

Spark常用Transformations算子(二)

介绍以下Transformations算子: aggregateByKey join cogroup cartesian pipe repartit...

1054
来自专栏扎心了老铁

spark三种连接join

本文主要介绍spark join相关操作。 讲述spark连接相关的三个方法join,left-outer-join,right-outer-join,在这之前...

3528
来自专栏数据结构与算法

洛谷P2863 [USACO06JAN]牛的舞会The Cow Prom

ng the other ends of her ropes (if she has any), along with the cows holding the...

3315

扫码关注云+社区