5.4 RDD编程---综合案例

一、求top值

任务描述:求出多个文件中数值的最大、最小值

 

二、求最大最小值

任务描述:求出多个文件中数值的最大、最小值

解题思路:通过一个人造的key,让所有的值都成为“key”的value-list,然后对value-list进行遍历,用两个变量求出最大最小值。

代码如下:

三、文件排序

任务描述:有多个输入文件,每个文件中的每一行内容均为一个整数。要求读取所有文件中的整数,进行排序后,输出到一个新的文件中,输出的内容个数为每行两个整数,第一个整数为第二个整数的排序位次,第二个整数为原待排序的整数。

由于输入文件有多个,产生不同的分区,为了生成序号,使用HashPartitioner将中间的RDD归约到一起

代码如下:

四、二次排序

任务要求:对于一个给定的文件(数据如file1.txt所示),请对数据进行排序,首先根据第1列数据降序排序,如果第1列数据相等,则根据第2列数据降序排序。

二次排序,具体的实现步骤:

  1. 按照Ordered(继承排序的功能)和Serializable(继承可序列化的功能)接口实现自定义排序的key
  2. 将要进行二次排序的文件加载进来生成<key,value>类型的RDD;
  3. 使用sortByKey基于自定义的Key进行二次排序;
  4. 去除掉排序的Key,只保留排序的结果

SecondarySortKey.scala代码如下:

五、连接操作

任务描述:在推荐领域有一个著名的开放测试集,下载链接,该测试集包含三个文件,分别是ratings.dat、sers.dat、movies.dat,具体介绍可阅读:README.txt。请编程实现:通过连接ratings.dat和movies.dat两个文件得到平均得分超过4.0的电影列表,采用的数据集是:ml-1m

文件1:movies.dat(MovieID::Title::Genres

文件2:ratings.dat(UserID::MovieID::Rating::Timestamp

keyBy的key保持不变,value是把原来一整串的元素的值,整个作为新的RDD元素的一个value。

代码如下:

  

 

参考文献:

【1】Spark编程基础_中国大学MOOC(慕课)

posted @   nxf_rabbit75  阅读(1450)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现
历史上的今天:
2018-11-09 【序列模型】第三课--序列模型和注意力机制
2018-11-09 【序列模型】第二课--自然语言处理与词嵌入
一、求top值二、求最大最小值三、文件排序四、二次排序五、连接操作
点击右上角即可分享
微信分享提示