4.8.2 利用Spark SQL计算总分与平均分

姓名语文数学英语物理化学
陈燕文8998807665
张晓峰9078928456
李太白8793677892
洪小琳9867879076

在这里插入图片描述

1. 准备数据

  • 创建本地成绩文件scores.txt,包含学生成绩数据。
  • 上传到 HDFS
    • 创建目录:hdfs dfs -mkdir -p /scoresumavg/input
    • 上传文件:hdfs dfs -put scores.txt /scoresumavg/input

2. 交互式实现

  • 读取成绩文件:使用 Spark 读取 HDFS 上的文件。
    val df = spark.read.text("hdfs://master:9000/scoresumavg/input/scores.txt")
    
  • 转换数据帧:将单列文本数据帧转换为多列数据帧,包含学生姓名和各科成绩。
    val scoreDF = df.withColumn(...).drop("value")
    
  • 创建临时视图:将转换后的数据帧注册为临时视图,以便使用 SQL 查询。
    scoreDF.createOrReplaceTempView("t_score")
    
  • 执行 SQL 查询:计算每名学生的总分和平均分。
    val result = spark.sql("select name, (chinese + math + english + physics + chemistry) as sum, round((chinese + math + english + physics + chemistry) / 5.0, 2) as avg from t_score")
    
  • 展示结果:在控制台展示查询结果。
    result.show
    

3. Spark 项目实现

  • 创建 Maven 项目:选择 Scala 作为编程语言,配置项目名称和其他基本信息。
  • 添加依赖:添加 Spark Core 和 Spark SQL 的 Maven 依赖。
  • 设置源程序文件夹:将源代码目录设置为 Scala 目录。
  • 添加 Scala SDK:确保项目配置了 Scala 开发环境。
  • 创建日志属性文件log4j.properties,配置日志记录器。
  • 创建 HDFS 配置文件hdfs-site.xml,配置 HDFS 客户端属性。

4. 开发 Scala 程序

  • 创建包和对象:在 net.huawei.sql 包中创建 ScoreSumAvg 对象。
  • 编写主方法:在 ScoreSumAvg 对象中编写 main 方法,实现数据读取、转换、查询和展示的逻辑。
  • 运行程序:编译并运行 Scala 程序,查看控制台输出的成绩统计结果。

5. 验证结果

  • 检查控制台输出:确保程序正确运行并输出预期的总分和平均分。
  • 验证 HDFS 数据:可选地,检查 HDFS 上的数据文件是否正确上传和处理。

6. 项目优化与维护

  • 代码优化:根据需要重构代码,提高程序的可读性和性能。
  • 异常处理:添加异常处理逻辑,确保程序的健壮性。
  • 扩展功能:根据需求,可能需要添加更多的数据处理功能。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

板凳------56.Linux/Unix 系统编程手册(下) -- SOCKET 介绍

56.1.概述 socket 是一种IPC方法,允许位于同一主机或使用网络连接起来的不同主机上的应用程序之间交换数据。 UNIX 允许位于同一主机系统上的应用程序之间通信 Internet domain IPv4 and IPV6 // socket 通信方式 1.各个应用程序创建一个socket,socket是…

块级元素与行内元素详解

在网页设计与开发中,元素根据其在页面布局中的表现可分为两大类:块级元素(Block-level Elements)和行内元素(Inline Elements)。理解它们的特性和使用规则对于构建结构清晰、布局合理的网页至关重要。 块级…

【因果推断python】38_预测模型1

目录 工业界中的机器学习 之前的部分涵盖了因果推理的核心。那里的技术是众所周知和成熟的。他们经受住了时间的考验。第一部分建立了我们可以依赖的坚实基础。用更专业的术语来说,第一部分侧重于定义什么是因果推理,哪些偏差会阻止相关性成为因果关系&…

高考分数线一分一段统计汇总——使用SQL窗口函数

高考分数线一分一段统计汇总——使用SQL窗口函数 select 总分数, 一分一段人数, sum(一分一段人数) over( order by 总分数 desc) as 累计排名 from( select 总分数, count(考生号) as 一分一段人数 from ( select 考生号…

网络编程(四)

一、使用wireshark抓包分析协议头 &#xff08;一&#xff09;wireshark常用的过滤语句 tcp.port <想要查看的端口号> ip.src <想要查看的源IP地址> ip.dest <想要查看的目的IP地址> ip.addr <想要查看的IP地址>&#xff08;二&#xff09;抓包分…

【Java】解决Java报错:InterruptedException in Multi-threaded Applications

文章目录 引言一、InterruptedException的定义与概述1. 什么是InterruptedException&#xff1f;2. InterruptedException的常见触发场景3. 示例代码 二、解决方案1. 正确处理InterruptedException2. 合理使用中断机制3. 使用更高层次的并发工具 三、最佳实践1. 避免吞掉Interr…

如何使用alias永久别名(linux篇)

一、alias的使用 alias主要作用是起一个别名的用处 它又分两种形式&#xff1a; ① 临时别名 ② 永久别名 1.第一种&#xff08;临时别名&#xff09;&#xff1a; C:\Users\62452>ssh root192.168.0.102 root192.168.0.102s password: Last login: Sat Jun 15 16:30:12 20…

了解统计学中不同类型的分布

目录 一、说明 二、均匀分布&#xff1a; 三、机器学习和数据科学中的均匀分布示例&#xff1a; 3.1 对数正态分布&#xff1a; 3.2 机器学习和数据科学中的对数正态分布示例&#xff1a; 四、 帕累托分布 4.1 什么是幂律&#xff1f; 4.2 机器学习和数据科学中的帕累托分布示例…

【C#】图形图像编程

实验目标和要求&#xff1a; 掌握C#图形绘制基本概念&#xff1b;掌握C#字体处理&#xff1b;能进行C#图形图像综合设计。 运行效果如下所示&#xff1a; 1.功能说明与核心代码 使用panel为画板&#xff0c;完成以下设计内容&#xff1a; 使用pen绘制基础图形&#xff1b;使…

Django初学者指南

文章目录 Django初学者指南1 Django简介1.1 Django的历史1.2 使用Django的知名网站1.4 Django的主要特点1.5 Django的工作原理 2 Django 使用2.1 Django 支持的 Python 版本2.2 Django 版本 3 Django 开发 Web 程序3.1 安装Django3.2 创建Django项目3.3 运行开发服务器3.4 创建…

【纯干货级教程】深度学习根据loss曲线进行分析调参

相信很多刚刚接触目标检测系列算法小伙伴跑深度学习算法时会有许多困惑&#xff0c;比如训练得出的loss曲线有什么意义&#xff1f;训练的一些参数要如何设置选择&#xff1f;选择哪个算法模型作为baseline、选择哪个参数量/复杂度/深度的模型进行训练最为合适&#xff1f; 本…

在VS Code中快速生成Vue模板的技巧

配置vue.json: { "Print to console": {"prefix": "vue","body": ["<template>"," <div class\"\">\n"," </div>","</template>\n","<scri…

如何在WIndows虚拟机安装 macOS 黑苹果系统?

在本教程中&#xff0c;我们将介绍如何在虚拟机上安装 macOS 黑苹果系统。黑苹果系统是非苹果公司官方支持的 macOS 系统的非官方版本&#xff0c;可以在普通 PC 上运行。请注意&#xff0c;安装黑苹果系统可能违反苹果的许可协议&#xff0c;请自行承担风险。参考视频教程&…

Linux之BCC 性能工具的移植和使用

一、bcc 工具 bcc 的全称&#xff1a;BPF Compiler Collection BCC&#xff08;BPF Compiler Collection&#xff09;是一个用于创建高效的内核跟踪和操作程序的工具包&#xff0c;包含了几个有用的工具和示例。它利用了扩展的BPF&#xff08;Berkeley Packet Filters&#x…

欧洲杯赛况@20240615

点击标题下「蓝色微信名」可快速关注 欧洲杯首战&#xff0c;德国5:1狂胜苏格兰&#xff0c;大比分、红点套餐、超新星登场进球&#xff0c;好像这些能想到的元素都发挥了作用&#xff0c;作为东道主&#xff0c;聚集了天时地利人和&#xff0c;可以说是完美&#xff0c;这就是…

记录:利用 Agora 在 Unity3D MRTK场景中创建实时视频聊天应用

目录 准备1. 安装Agora_Unity_RTC_SDK2. 创建UI3. script具体内容4. 使用测试 本质是两部带摄像机的设备同时进入Agora聊天室内视频。 去年实现过一次这个功能&#xff0c;用的是Agora_Unity_RTC_SDK 4.2.2版本的&#xff0c;今年使用失败&#xff0c;遂重新安装最新版本Agora…

docker安装消息队列mq中的rabbit服务

在现代化的分布式系统中&#xff0c;消息队列&#xff08;Message Queue, MQ&#xff09;已经成为了一种不可或缺的组件。RabbitMQ作为一款高性能、开源的消息队列软件&#xff0c;因其高可用性、可扩展性和易用性而广受欢迎。本文将详细介绍如何在Docker环境中安装RabbitMQ服务…

中文版svn怎么忽略文件

个人需求&#xff1a; 不上传dist&#xff0c;dist.7z&#xff0c;node_modules等文件夹 实际操作&#xff1a; 前言&#xff1a;在上传svn为避免操作失败导致丢失文件的情况&#xff0c;保险起见&#xff0c;先备份代码 1&#xff1a;右键点击 2&#xff1a;点击新建 – 其…

【C++】图1

并查集 template <class T> class UnionFindSet { public:UnionFindSet(size_t n):_ufs(n, -1){}void Union(int x1, int x2){int root1 FindRoot(x1);int root2 FindRoot(x2);if (root1 root2)return;if (root1 > root2)swap(root1, root2);_ufs[root1] _ufs[ro…

uniapp开发微信小程序问题汇总

1. 自定义校验规则validateFunction失效 2. 微信小程序不支持<Br>换行 在 <text></text> 标签中使用\n(必须 text 标签&#xff0c;view 标签无效 ) 3. 微信小程序无法使用本地静态资源图片的解决方法 (1) 将图片上传到服务器&#xff0c;小程序访问该图片…