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地址无法访问的问题?
1278 0
Vue.js - 如何解决Vue项目IP地址无法访问的问题?
|
8月前
|
关系型数据库 MySQL Linux
CentOS 7系统下详细安装MySQL 5.7的步骤:包括密码配置、字符集配置、远程连接配置
以上就是在CentOS 7系统下安装MySQL 5.7的详细步骤。希望这个指南能帮助你顺利完成安装。
2064 26
|
小程序
新闻电影资讯类小程序模板源码
新闻电影资讯类小程序模板源码
2417 5
|
运维 监控 定位技术
故障转移和自动恢复
故障转移和自动恢复
534 1
|
机器学习/深度学习 数据采集 人工智能
机器学习实战 | 综合项目-电商销量预估进阶方案
本篇内容是Kaggle数据科学竞赛Rossmann store sales解决方案的进阶版本,整体方案包括探索性数据分析、缺失值处理、特征工程、基准模型与评估、XGBoost建模与调优等完整板块。
4480 1
机器学习实战 | 综合项目-电商销量预估进阶方案
|
SQL Oracle 关系型数据库
Flink的表值函数(Table-Valued Function,TVF)是一种返回值是一张表的函数
【2月更文挑战第17天】Flink的表值函数(Table-Valued Function,TVF)是一种返回值是一张表的函数
338 1
|
UED 开发者
无障碍网页设计(A11Y):提升用户体验,践行社会责任
【4月更文挑战第13天】本文探讨了无障碍网页设计(A11Y)的重要性,强调其消除数字鸿沟、扩大用户群体和优化通用体验的价值。文章介绍了实践无障碍设计的指南,包括使用语义化HTML、提供文本替代、确保键盘可操作性、保证色彩对比度和使用ARIA属性。通过代码示例,展示了如何将这些原则应用到实际项目中,呼吁开发者共同构建更具包容性的网络环境。
374 0
|
消息中间件 存储 分布式计算
Spark学习---6、SparkStreaming(SparkStreaming概述、入门、Kafka数据源、DStream转换、输出、关闭)(二)
Spark学习---6、SparkStreaming(SparkStreaming概述、入门、Kafka数据源、DStream转换、输出、关闭)(二)
|
安全 数据建模 网络安全
探索常见的SSL证书类型及其应用场景
探索常见的SSL证书类型及其应用场景
440 0