RDD 算子_转换_排序 | 学习笔记

简介: 快速学习 RDD 算子_转换_排序

开发者学堂课程【大数据 Spark 2020版(知识精讲与实战演练)第三阶段RDD 算子_转换_排序】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/689/detail/11977


RDD 算子_转换_排序


内容介绍

一、前言

二、实例

三、总结


一、前言

在学习完前面的课程后,我们来了解一下在 RDD 中的排序问题。与排序相关的算子有两个,一个叫做 sortBy ,一个叫做 sortByKey sortBy 是可以作用于 keyValue 和普通类型的数据, sortByKey 则必须作用于 keyValue 的数据类型。


二、实例

先看一个小案例,理解一下 sortBy sortByKey 的实现过程。创建一个方法 sort ,定义两个集合,第一个集合为基本型数据,第二个集合为 keyValue 型数据。

sortBy 是让算子明白应该使用哪部分数据进行排序。

代码如下:

@Test

def sort() : Unit = {

val rdd1 = sc.parallelize(Seq(2,4,1,5,1,8))

val rdd2 = sc.parallelize(Seq(("a",1),("b",3),("c",2)))

rdd1.sortBy(item => item)

rdd2.sortBy(item => item._2).collect().foreach(println(_))

rdd2.sortByKey()

}

运行后的结果为( a 1),( c 2),( b 3)。将代码结尾稍稍改动后,再次运行观察结果,改动如下:

rdd2.sortByKey().collect().foreach(println(_))

运行后的结果为( a 1),( b 3),( c 2),可以注意到它是按照 ABC 字典序列进行排序的。

如果想用 Value 进行排序,同时也想使用 sortByKey ,可使用以下代码,只是稍稍有点麻烦:

rdd2.map(item =>(item._2, item._1)).sortByKey().map(item => (item._2, item._1))

运行该代码后,可得到( a 1),( c 2),( b 3),这是按照 Value 进行排序的。

1.png

个人认为 sortBy 的实用价值会更高一些,sortByKey 是一种简写,按照 Key 来进行排序。

 

三、总结

简单总结一下, sortBy 作用于任何类型数据的 RDD ,可以按照任何部分进行排序。

sortByKey 只适用于 keyValue 类型的数据,只能按照 Key 排序,但是 sortByKey 写法简单,无需编写函数。这就是 sortBy sortByKey 的区别。

相关文章
|
9月前
|
存储 分布式计算 并行计算
Spark学习---2、SparkCore(RDD概述、RDD编程(创建、分区规则、转换算子、Action算子))(一)
Spark学习---2、SparkCore(RDD概述、RDD编程(创建、分区规则、转换算子、Action算子))(一)
|
9月前
|
存储 分布式计算 对象存储
Spark学习---2、SparkCore(RDD概述、RDD编程(创建、分区规则、转换算子、Action算子))(二)
Spark学习---2、SparkCore(RDD概述、RDD编程(创建、分区规则、转换算子、Action算子))(二)
|
存储 缓存 分布式计算
Spark RDD算子进阶(转换算子、行动算子、缓存、持久化)(下)
Spark RDD算子进阶(转换算子、行动算子、缓存、持久化)(下)
111 0
Spark RDD算子进阶(转换算子、行动算子、缓存、持久化)(下)
|
分布式计算 大数据 Spark
Rdd 算子_转换_集合操作 | 学习笔记
快速学习 Rdd 算子_转换_集合操作
64 0
Rdd 算子_转换_集合操作 | 学习笔记
|
分布式计算 大数据 Scala
RDD 算子_转换_ foldByKey | 学习笔记
快速学习 RDD 算子_转换_ foldByKey
127 0
RDD 算子_转换_  foldByKey | 学习笔记
|
分布式计算 大数据 Spark
Rdd 算子_转换_回顾 | 学习笔记
快速学习 Rdd 算子_转换_回顾
50 0
Rdd 算子_转换_回顾 | 学习笔记
|
分布式计算 大数据 开发者
RDD 算子_转换_ aggregateByKey | 学习笔记
快速学习 RDD 算子_转换_ aggregateByKey
88 0
RDD 算子_转换_ aggregateByKey | 学习笔记
|
分布式计算 算法 大数据
Rdd 算子_转换_mapvalues | 学习笔记
快速学习 Rdd 算子_转换_mapvalues
101 0
Rdd 算子_转换_mapvalues | 学习笔记
|
分布式计算 大数据 Spark
RDD 算子_转换_总结 | 学习笔记
快速学习 RDD 算子_转换_总结
60 0
|
分布式计算 算法 大数据
RDD 算子_转换_ combineByKey | 学习笔记
快速学习 RDD 算子_转换_ combineByKey
106 0
RDD 算子_转换_ combineByKey | 学习笔记