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 的区别。

相关文章
|
JavaScript
Vue.js - 如何解决Vue项目IP地址无法访问的问题?
Vue.js - 如何解决Vue项目IP地址无法访问的问题?
1246 0
Vue.js - 如何解决Vue项目IP地址无法访问的问题?
|
XML Java 数据格式
Spring中使用AspectJ实现AOP的五种通知
Spring中使用AspectJ实现AOP的五种通知
338 1
Spring中使用AspectJ实现AOP的五种通知
|
6月前
|
关系型数据库 MySQL Linux
CentOS 7系统下详细安装MySQL 5.7的步骤:包括密码配置、字符集配置、远程连接配置
以上就是在CentOS 7系统下安装MySQL 5.7的详细步骤。希望这个指南能帮助你顺利完成安装。
1580 26
|
5月前
|
JavaScript API 容器
Vue 3 中的 nextTick 使用详解与实战案例
Vue 3 中的 nextTick 使用详解与实战案例 在 Vue 3 的日常开发中,我们经常需要在数据变化后等待 DOM 更新完成再执行某些操作。此时,nextTick 就成了一个不可或缺的工具。本文将介绍 nextTick 的基本用法,并通过三个实战案例,展示它在表单验证、弹窗动画、自动聚焦等场景中的实际应用。
478 17
|
小程序
新闻电影资讯类小程序模板源码
新闻电影资讯类小程序模板源码
2092 5
|
运维 监控 定位技术
故障转移和自动恢复
故障转移和自动恢复
427 1
|
SQL Oracle 关系型数据库
Flink的表值函数(Table-Valued Function,TVF)是一种返回值是一张表的函数
【2月更文挑战第17天】Flink的表值函数(Table-Valued Function,TVF)是一种返回值是一张表的函数
286 1
|
UED 开发者
无障碍网页设计(A11Y):提升用户体验,践行社会责任
【4月更文挑战第13天】本文探讨了无障碍网页设计(A11Y)的重要性,强调其消除数字鸿沟、扩大用户群体和优化通用体验的价值。文章介绍了实践无障碍设计的指南,包括使用语义化HTML、提供文本替代、确保键盘可操作性、保证色彩对比度和使用ARIA属性。通过代码示例,展示了如何将这些原则应用到实际项目中,呼吁开发者共同构建更具包容性的网络环境。
340 0
|
Shell 网络安全 开发工具
还不会 Git?最详细教你学会 Git + TortoiseGit 安装使用及提交代码!
还不会 Git?最详细教你学会 Git + TortoiseGit 安装使用及提交代码!
1049 0