任务3.8.4 利用RDD实现分组排行榜

文章目录

  • 1. 任务说明
  • 2. 解决思路
  • 3. 准备成绩文件
  • 4. 采用交互式实现
  • 5. 采用Spark项目
  • 实战概述:使用Spark RDD实现分组排行榜
    • 任务背景
    • 任务目标
    • 技术选型
    • 实现步骤
      • 1. 准备数据
      • 2. 数据上传至HDFS
      • 3. 启动Spark Shell
      • 4. 读取数据生成RDD
      • 5. 数据处理
      • 6. 计算TopN
      • 7. 输出结果
      • 8. 采用Spark项目实现
    • 代码实现
    • 结果展示
    • 总结

在这里插入图片描述

1. 任务说明

在这里插入图片描述

2. 解决思路

在这里插入图片描述

3. 准备成绩文件

在这里插入图片描述

4. 采用交互式实现

在这里插入图片描述

5. 采用Spark项目

在这里插入图片描述


实战概述:使用Spark RDD实现分组排行榜

任务背景

在大数据环境下,经常需要对数据进行分组和排序操作。本实战任务旨在利用Apache Spark的RDD(弹性分布式数据集)来实现对学生成绩数据的分组,并求出每个学生分数最高的前3个成绩。

任务目标

  • 处理学生成绩数据,每个学生有多条成绩记录。
  • 对每个学生的成绩进行分组。
  • 计算每个学生分数最高的前3个成绩。
  • 输出格式化的排行榜结果。

技术选型

  • 使用Apache Spark作为大数据处理框架。
  • 利用Scala语言进行编程实现。

实现步骤

1. 准备数据

  • 创建本地文件grades.txt,包含学生姓名和对应的成绩。

2. 数据上传至HDFS

  • 创建HDFS目录/topn/input
  • grades.txt上传至HDFS。

3. 启动Spark Shell

  • 执行命令spark-shell --master spark://master:7077启动Spark Shell。

4. 读取数据生成RDD

  • 使用sc.textFile读取HDFS上的成绩文件,生成RDD。

5. 数据处理

  • 将每行数据映射为(key, value)形式的二元组,其中key为学生姓名,value为成绩。
  • 使用groupByKey对RDD中的元素按照key进行分组。

6. 计算TopN

  • 对每个分组的value列表进行降序排序,并取前3个元素。

7. 输出结果

  • 格式化输出每个学生的Top3成绩。

8. 采用Spark项目实现

  • 创建Maven项目,添加Spark依赖。
  • 添加Scala SDK。
  • 创建日志和HDFS配置文件。
  • 编写Scala程序实现上述数据处理逻辑。
  • 运行程序并查看输出结果。

代码实现

以下是使用Scala编写的Spark程序示例,用于实现分组排行榜功能:

package net.huawei.rddimport org.apache.spark.{SparkConf, SparkContext}object GradeTopN {def main(args: Array[String]): Unit = {val conf = new SparkConf().setAppName("SparkGradeTopN").setMaster("local[*]")val sc = new SparkContext(conf)val rdd1 = sc.textFile("hdfs://master:9000/topn/input/grades.txt")val rdd2 = rdd1.map(line => line.split(" ") match {case Array(name, score) => (name, score.toInt)})val rdd3 = rdd2.groupByKey()val rdd4 = rdd3.mapValues(_.toList.sortBy(-_).take(3))rdd4.foreach(t => println(s"${t._1}${t._2.mkString(" ")}"))sc.stop()}
}

结果展示

程序运行后,将输出每个学生的Top3成绩

张三丰:94 90 87
李孟达:88 85 82
王晓云:98 97 93

总结

本实战任务展示了如何使用Spark RDD对数据进行分组和TopN计算,这是大数据领域中常见的数据处理需求。通过Spark的强大数据处理能力,可以高效地完成此类任务。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/32198.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

学习es6

1、let变量 2、const常量 3、解构赋值 4、模板字符串 5、简化对象写法 6、参数默认值 7、rest参数 8、扩展运算符 9、扩展对象方法 10、扩展数组方法 11、Set 12,Promise 13、Module模块

Leetcode - 周赛402

目录 一,3185. 构成整天的下标对数目 II 二,3186. 施咒的最大总伤害 三,3187. 数组中的峰值 一,3185. 构成整天的下标对数目 II 这里的T1,T2是一个题,这里直接一起讲了, 当我们已知 x%24 的值…

MobileNetV3轻量化YOLOv8

1 轻量化模型 一般而言,模型轻量化有三个途径: 知识蒸馏:大模型引导小模型训练,让其逼近大模型效果 轻量化模块替换:利用一些轻量化模块进行替换,减少模型参数 剪枝:通过优化算法引导模型裁剪无用的参数 MobileNetV3论文如下,自行搜索 2 修改步骤 在nn/modules的文…

qt+halcon实战

注意建QT工程项目用的是MSVC,如果选成MinGW,则会报错 INCLUDEPATH $$PWD/include INCLUDEPATH $$PWD/include/halconcppLIBS $$PWD/lib/x64-win64/halconcpp.lib LIBS $$PWD/lib/x64-win64/halcon.lib#include "halconcpp/HalconCpp.h" #include &quo…

Kubernetes Ingress 简介

前言 Ingress 是 Kubernetes 中的一种资源对象,用于管理从集群外部到内部服务的 HTTP 和 HTTPS 路由。它提供了灵活的路由功能、SSL/TLS 终止、负载均衡和虚拟主机支持。Ingress 需要一个 Ingress 控制器来实际处理路由,并且可以通过配置不同的控制器来…

RedHat9 | Web服务配置与管理(Apache)

一、实验环境 1、Apache服务介绍 Apache服务,也称为Apache HTTP Server,是一个功能强大且广泛使用的Web服务器软件。 起源和背景 Apache起源于NCSA httpd服务器,经过多次修改和发展,逐渐成为世界上最流行的Web服务器软件之一。…

蔚来汽车AI算法工程师,如何理解注意力?

大家好啊,我是董董灿。 今天分享一个上海蔚来汽车的AI算法岗位面试经验总结帖,面试岗位为算法工程师。 这次面试提到的问题,除了与实习相关内容和反问之外,面试官总共问了8个问题,主要集中在深度学习基础概念的理解上…

共93本!全网最全Frontiers旗下期刊2022、2023版影响因子和分区对比完整版目录!

本周投稿推荐 SSCI • 1区,4.0-5.0(无需返修,提交可录) EI • 各领域沾边均可(2天录用) CNKI • 7天录用-检索(急录友好) SCI&EI • 4区生物医学类,0.1-0.5&…

Gotchiverse Alchemica 代币现已在Base上线

​ 朋友们大家好, 继 GHST 成功登陆 Base 之后,我们很高兴地宣布,Gotchiverse的 "Gotchus Alchemica " token 也将登陆 Base! 从今天起,你就可以通过我们由 Socket 协议提供的新链抽象技术,将 Al…

# 消息中间件 RocketMQ 高级功能和源码分析(十一)

消息中间件 RocketMQ 高级功能和源码分析(十一) 一、消息中间件 RocketMQ 源码分析: 拉取消息长轮询机制 1、消息拉取长轮询机制分析 RocketMQ 未真正实现消息推模式,而是消费者主动向消息服务器拉取消息,RocketMQ …

毕业季带给我的五个启示

每到毕业季,校园里总是充满了复杂的情绪。有人欢笑,有人落泪。同样的四年大学生活,为何结局如此不同?本文将从多个角度探讨如何实现综合改变,解释在交友、机会和心态上的关键因素,揭示“慢就是快”的真理。…

go语言day2

使用cmd 中的 go install ; go build 命令出现 go cannot find main module 错误怎么解决? go学习-问题记录(开发环境)go: cannot find main module; see ‘go help modules‘_go: no flags specified (see go help mod edit)-CSDN博客 在本…

MinIO 网络与覆盖网络

云计算和容器化技术的发展改变了应用程序的开发、部署和管理方式。这种转变给网络环境带来了重大变化,为DevOps和SRE工程师带来了新的挑战和机遇。然而,在这种转变中,出现了明显的知识差距,特别是在理解物理网络和硬件背景下网络的…

【自动驾驶】ROS小车系统

文章目录 小车组成轮式运动底盘的组成轮式运动底盘的分类轮式机器人的控制方式感知传感器ROS决策主控ROS介绍ROS的坐标系ROS的单位机器人电气连接变压模块运动底盘的电气连接ROS主控与传感器的电气连接ROS主控和STM32控制器两种控制器的功能运动底盘基本组成电池电机控制器与驱…

Vulnhub--OS-HACKNOS-2.1

渗透复现 目标站点为wordpress,通过wpscan进行漏洞扫描发现漏洞插件 通过漏洞插件存在的目录穿越漏洞成功读取/etc/passwd文件中flag用户的密码 SSH登录flag用户后在备份文件中找到rohit用户的密码 切换rohit用户,rohit用户能够以root权限执行任何文…

mysql自动填写当前时间,添加索引

mysql自动填写当前时间 在navicat操作界面创建表时,如果需要自动填写时间,可以操作如下 CURRENT_TIMESTAMP为表添加索引 ALTER table tableName ADD INDEX indexName(columnName)追加外键 ALTER TABLE tb_commentPhoto ADD CONSTRAINT FK_comment_ph…

Linux-目录和文件

目录 一、Linux目录 1、Linux常见目录 2、常见的Linux文件类型 二、cat-查看文件命令 1、cat命令用法 三、分页查看文件内容 1、 more命令 ​2、less命令 ​3、more和less的区别 四、查看文件开头或末尾 1、head命令 2、tail命令 3、wc-统计文件内容 4、grep 命令…

多功能投票系统(ThinkPHP+FastAdmin+Uniapp)

让决策更高效,更民主🌟 ​基于ThinkPHPFastAdminUniapp开发的多功能系统,支持图文投票、自定义选手报名内容、自定义主题色、礼物功能(高级授权)、弹幕功能(高级授权)、会员发布、支持数据库私有化部署,Uniapp提供全部无加密源码…

工业web4.0UI风格令人惊艳

工业web4.0UI风格令人惊艳

ARM阻击高通:AI PC大战与芯片之争

引言 在AI PC领域,高通的X Elite芯片因为其高性能和低功耗,一度被认为是未来的主导者。然而,ARM公司却通过法律手段试图阻止高通的独大,这不仅可能拖慢AI PC的发展进程,还引发了业界的广泛关注。本文将深入探讨ARM和高…