Spark项目实训(一)

目录

实验任务一:计算级数

idea步骤分步:

完整代码:

 linux步骤分布:

实验任务二:统计学生成绩

idea步骤分布:

完整代码:

linux步骤分步:


实验任务一:计算级数

请用脚本的方式编程计算并输出下列级数的前 n 项之和 Sn,直到 Sn 刚好大于或等于 q 为止,其中 q 为大于 0 的整数,其值通过键盘输 入。 

例如,若 q 的值为 50.0,则输出应为:Sn=50.416695。请将源文件 保存为 exercise2-1.scala,在 REPL 模式下测试运行,测试样例: q=1 时,Sn=2;q=30 时,Sn=30.891459;q=50 时,Sn=50.416695。

idea步骤分步:

// 导入输入输出库

import scala.io.StdIn._

// 导入输入输出库  
import scala.io.StdIn._

// 初始化 Sn 变量为 0

// 初始化 Sn 变量为 0
var Sn: Double = 0.0

// 初始化 n 变量为 1

// 读取用户输入的 q 并赋值给变量 q

val q = StdIn.readInt()

 // 读取用户输入的 q 并赋值给变量 qprintln("请输入一个大于0的数q:")val q = readDouble()

// 当 Sn 小于 q 时执行循环

// 当 Sn 小于 q 时执行循环while (Sn < q) {}

// Sn 的值加上(n+1)/n

// Sn 的值加上 (n+1)/nSn += (n + 1) / n.toDouble

// n 自增 1

// n 自增 1n += 1

// 输出 Sn 的最终值

// 输出 Sn 的最终值println(s"Sn=$Sn")

完整代码:

// 导入输入输出库  
import scala.io.StdIn._object facaigao {def main(args: Array[String]): Unit = {// 读取用户输入的 q 并赋值给变量 qprintln("请输入一个大于0的数q:")val q = readDouble()// 初始化 Sn 变量为 0var Sn: Double = 0.0// 初始化 n 变量为 1var n: Int = 1// 当 Sn 小于 q 时执行循环while (Sn < q) {// Sn 的值加上 (n+1)/nSn += (n + 1) / n.toDouble// n 自增 1n += 1}// 输出 Sn 的最终值println(s"Sn=$Sn")}
}

 linux步骤分布:

1、开启 scala 命令行:

[root@master ~]# su - hadoop
[hadoop@master ~]$ cd /usr/local/src/scala/bin
[hadoop@master bin]$ ./scala
标题

2、执行下面的代码: 

// 导入输入输出库
scala> import io.StdIn._
// 初始化 Sn 变量为 0
scala> var Sn:Float = 0
// 初始化 n 变量为 1
scala> var n:Float=1
// 输出提示信息让用户输入 q
scala> println("please input q:")
// 读取用户输入的 q 并赋值给变量 q
scala> val q = readInt()
// 当 Sn 小于 q 时执行循环
scala> while(Sn<q){
| Sn+=(n+1)/n // Sn 的值加上(n+1)/n
| n+=1 // n 自增 1
| }
// 输出 Sn 的最终值
scala> println(s"Sn=$Sn")

其中 val q = readInt()表示在 linux shell 终端输入 q 的 值,执行代码之后会一直监听窗口,等待键盘输入 q 的值,这里设 置了 q=30。

 最后输入 :q 退出 scala shell

实验任务二:统计学生成绩

学生的成绩清单格式如下所示,第一行为表头,各字段意思分别为 学号、性别、课程名 1、课程名 2 等,后面每一行代表一个学生的 信息,各字段之间用空白符隔开, 给定任何一个如上格式的清单(不同清单里课程数量可能不一样), 要求尽可能采用函数式编程,统计出各门课程的平均成绩,最低成 绩,和最高成绩;另外还需按男女同学

Id gender Math English Physics Science
301610 male 72 39 74 93
301611 male 75 85 93 26
301612 female 85 79 91 57
301613 female 63 89 61 62
301614 male 72 63 58 64
301615 male 99 82 70 31
301616 female 100 81 63 72
301617 male 74 100 81 59
301618 female 68 72 63 100
301619 male 63 39 59 87
301620 female 84 88 48 48
301621 male 71 88 92 46
301622 male 82 49 66 78
301623 male 63 80 83 88
301624 female 86 80 56 69
301625 male 76 69 86 49
301626 male 91 59 93 51
301627 female 92 76 79 100
301628 male 79 89 78 57
301629 male 85 74 78 80

分开,分别统计各门课程的 平均成绩,最低成绩,和最高成绩。

桌面创建数据文件名字为1.txt

Id gender Math English Physics
301610 male 80 64 78
301611 female 65 87 58
301612 female 44 71 77
301613 female 66 71 91
301614 female 70 71 100
301615 male 72 77 72
301616 female 73 81 75
301617 female 69 77 75
301618 male 73 61 65
301619 male 74 69 68
301620 male 76 62 76
301621 male 73 69 91
301622 male 55 69 61
301623 male 50 58 75
301624 female 63 83 93
301625 male 72 54 100
301626 male 76 66 73
301627 male 82 87 79
301628 female 62 80 54
301629 male 89 77 72

桌面创建数据文件名字为2.txt

idea步骤分布:

// 从文件中读取数据
val inputFile = scala.io.Source.fromFile("C:\\Users\\Administrator\\Desktop\\1.txt")
val originalData =inputFile.getLines.map{_.split("\\s+")}.toList
// 获取课程名和学生数据
val courseNames = originalData.head.drop(2) // 将第一行数据中
//前两列去除,其余作为课程名
val allStudents = originalData.tail // 剩余行数据为所有学生数据val courseNum = courseNames.length // 课程数量
// 定义统计函数
 def statistc(lines: List[Array[String]]) = {// 遍历每门课程,计算总分、最低分和最高分(for (i <- 2 to courseNum+1) yield {val temp = lines map { elem => elem(i).toDouble } //获取每门课程的成绩数据(temp.sum, temp.min, temp.max) // 计算总分、最低分和最高分}) map { case (total, min, max) => (total / lines.length,min, max) } // 计算平均分}
// 输出结果函数
 def printResult(theresult: Seq[(Double, Double, Double)]) {// 将课程名和结果对应输出(courseNames zip theresult) foreach {case (course, result) => println(f"${course + ":"}%-10s${result._1}%5.2f${result._2}%8.2f${result._3}%8.2f")}}
// 统计全体学生数据并输出结果
val allResult = statistc(allStudents)println("course average min max")printResult(allResult)
// 按性别划分数据
val (maleLines, femaleLines) = allStudents partition { _(1)== "male" }
// 统计男学生数据并输出结果
val maleResult = statistc(maleLines)
// 统计女学生数据并输出结果
val femaleResult = statistc(femaleLines)println("course average min max")printResult(femaleResult)

完整代码:

package facaigaoobject facaigao2{def main(args: Array[String]): Unit = {// 从文件中读取数据val inputFile = scala.io.Source.fromFile("C:\\Users\\Administrator\\Desktop\\1.txt")val originalData = inputFile.getLines.map{_.split("\\s+")}.toList// 获取课程名和学生数据val courseNames = originalData.head.drop(2) // 将第一行数据中//前两列去除,其余作为课程名val allStudents = originalData.tail // 剩余行数据为所有学生数据val courseNum = courseNames.length // 课程数量// 定义统计函数def statistc(lines: List[Array[String]]) = {// 遍历每门课程,计算总分、最低分和最高分(for (i <- 2 to courseNum+1) yield {val temp = lines map { elem => elem(i).toDouble } //获取每门课程的成绩数据(temp.sum, temp.min, temp.max) // 计算总分、最低分和最高分}) map { case (total, min, max) => (total / lines.length,min, max) } // 计算平均分}// 输出结果函数def printResult(theresult: Seq[(Double, Double, Double)]) {// 将课程名和结果对应输出(courseNames zip theresult) foreach {case (course, result) => println(f"${course + ":"}%-10s${result._1}%5.2f${result._2}%8.2f${result._3}%8.2f")}}// 统计全体学生数据并输出结果val allResult = statistc(allStudents)println("course average min max")printResult(allResult)// 按性别划分数据val (maleLines, femaleLines) = allStudents partition { _(1)== "male" }// 统计男学生数据并输出结果val maleResult = statistc(maleLines)println("course average min max")printResult(maleResult)// 统计女学生数据并输出结果val femaleResult = statistc(femaleLines)println("course average min max")printResult(femaleResult)}
}

 

 

样例1运行结果 

 样例2运行结果:

linux步骤分步:

创建代码文件夹

[hadoop@master myscalacode]$ cd /
[hadoop@master /]$ sudo mkdir myscalacode2

创建数据源文件

[hadoop@master /]$ cd myscalacode2
[hadoop@master myscalacode2]$ sudo vim test.txt

按 i 进入编辑模式,输入以下测试样例 1或者测试样例 2 的数据 (这里以测试样例 1 举例)

样例1 

Id gender Math English Physics
301610 male 80 64 78
301611 female 65 87 58
301612 female 44 71 77
301613 female 66 71 91
301614 female 70 71 100
301615 male 72 77 72
301616 female 73 81 75
301617 female 69 77 75
301618 male 73 61 65
301619 male 74 69 68
301620 male 76 62 76
301621 male 73 69 91
301622 male 55 69 61
301623 male 50 58 75
301624 female 63 83 93
301625 male 72 54 100
301626 male 76 66 73
301627 male 82 87 79
301628 female 62 80 54
301629 male 89 77 72

 样例2

Id gender Math English Physics Science
301610 male 72 39 74 93
301611 male 75 85 93 26
301612 female 85 79 91 57
301613 female 63 89 61 62
301614 male 72 63 58 64
301615 male 99 82 70 31
301616 female 100 81 63 72
301617 male 74 100 81 59
301618 female 68 72 63 100
301619 male 63 39 59 87
301620 female 84 88 48 48
301621 male 71 88 92 46
301622 male 82 49 66 78
301623 male 63 80 83 88
301624 female 86 80 56 69
301625 male 76 69 86 49
301626 male 91 59 93 51
301627 female 92 76 79 100
301628 male 79 89 78 57
301629 male 85 74 78 80

添加完毕之后按 Esc 键退出编辑模式,输入“:wq”保存退出

新建 scala 文件并编写代码

[hadoop@master myscalacode2]$ sudo vim scoreReport.scala

i 进入编辑模式,编写以下代码

object scoreReport {def main(args: Array[String]) {// 从文件中读取数据val inputFile = scala.io.Source.fromFile("test.txt")val originalData =
inputFile.getLines.map{_.split("\\s+")}.toList// 获取课程名和学生数据val courseNames = originalData.head.drop(2) // 将第一行数据中
前两列去除,其余作为课程名val allStudents = originalData.tail // 剩余行数据为所有学生数
据val courseNum = courseNames.length // 课程数量// 定义统计函数def statistc(lines: List[Array[String]]) = {// 遍历每门课程,计算总分、最低分和最高分(for (i <- 2 to courseNum+1) yield {val temp = lines map { elem => elem(i).toDouble } //
获取每门课程的成绩数据(temp.sum, temp.min, temp.max) // 计算总分、最低分和
最高分}) map { case (total, min, max) => (total / lines.length,
min, max) } // 计算平均分}// 输出结果函数def printResult(theresult: Seq[(Double, Double, Double)]) {// 将课程名和结果对应输出(courseNames zip theresult) foreach {case (course, result) => println(f"${course + ":"}%-
10s${result._1}%5.2f${result._2}%8.2f${result._3}%8.2f")}}// 统计全体学生数据并输出结果val allResult = statistc(allStudents)println("course average min max")printResult(allResult)// 按性别划分数据val (maleLines, femaleLines) = allStudents partition { _(1)
== "male" }// 统计男学生数据并输出结果val maleResult = statistc(maleLines)println("course average min max")printResult(maleResult)// 统计女学生数据并输出结果val femaleResult = statistc(femaleLines)println("course average min max")printResult(femaleResult)}
}

编译并运行程序 

[hadoop@master myscalacode2]$ sudo /usr/local/src/scala/bin/scalac
scoreReport.scala
[hadoop@master myscalacode2]$ ls
[hadoop@master myscalacode2]$ sudo /usr/local/src/scala/bin/scala
scoreReport

样例 1 的统计结果输出为:

course average min max 
Math: 69.20 44.00 89.00 
English: 71.70 54.00 87.00 
Physics: 76.65 54.00 100.00 
course average min max (males) 
Math: 72.67 50.00 89.00 
English: 67.75 54.00 87.00 
Physics: 75.83 61.00 100.00 
course average min max (females) 
Math: 64.00 44.00 73.00 
English: 77.63 71.00 87.00 
Physics: 77.88 54.00 100.00

样例 2 的统计结果为:

course average min max
Math: 79.00 63.00 100.00
English: 74.05 39.00 100.00
Physics: 73.60 48.00 93.00
Science: 65.85 26.00 100.00
course average min max
Math: 77.08 63.00 99.00
English: 70.46 39.00 100.00
Physics: 77.77 58.00 93.00
Science: 62.23 26.00 93.00
course average min max
Math: 82.57 63.00 100.00
English: 80.71 72.00 89.00
Physics: 65.86 48.00 91.00
Science: 72.57 48.00 100.00

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

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

相关文章

windows2008修改远程桌面端口,如何果断修改远程桌面端口,确保系统安全无忧!

在数字化时代的浪潮中&#xff0c;Windows 2008系统以其卓越的稳定性和可靠性&#xff0c;赢得了众多企业和个人的青睐。然而&#xff0c;随着网络安全问题的日益严峻&#xff0c;如何确保远程桌面连接的安全&#xff0c;成为了摆在我们面前的一道难题。今天&#xff0c;我将为…

理解大语言模型(二)——从零开始实现GPT-2

相关说明 这篇文章的大部分内容参考自我的新书《解构大语言模型&#xff1a;从线性回归到通用人工智能》&#xff0c;欢迎有兴趣的读者多多支持。 本文涉及到的代码链接如下&#xff1a;regression2chatgpt/ch11_llm/char_gpt.ipynb1 本文将讨论如何利用PyTorch从零开始搭建G…

VMware VCP VCAP认证已经不需要培训记录了

之前&#xff0c;VMware的VCP、VCAP认证&#xff0c;必需花上万银子参加培训才能参加考试拿证书&#xff1b;但从今年5月6号开始&#xff0c;只需要参加考试就可以了&#xff0c;不再需要这个培训记录了。 而且&#xff0c;VCTA、VCP、VCAP各等级的考试费统一了&#xff0c;都…

【Qt常用控件】—— 布局管理器

目录 前言 &#xff08;一&#xff09;垂直布局 &#xff08;二&#xff09;水平布局 &#xff08;三&#xff09;网格布局 &#xff08;四&#xff09;表单布局 &#xff08;五&#xff09;分组布局 &#xff08;六&#xff09;Spacer 总结 前言 之前使⽤Qt在界⾯上…

申请公众号数量达标

一般可以申请多少个公众号&#xff1f;目前企业主体只能申请2个公众号&#xff0c;这也意味着想做矩阵公众号的难度提升了。有些公司靠着诸多不同分工的公众号形成一个个矩阵&#xff0c;获取不同领域的粉丝。比如&#xff0c;目前主体为xx旗下公众号&#xff0c;共有30个&…

3.1 掌握RDD的创建

在Apache Spark中&#xff0c;RDD&#xff08;Resilient Distributed Dataset&#xff09;是一个基本的、不可变的、分布式的和可分区的数据集。它能够自动进行容错处理&#xff0c;并支持在大规模集群上的并行操作。RDD之间存在依赖关系&#xff0c;可以实现管道化&#xff0c…

Mysql-存储引擎、索引、SQL优化和视图

存储引擎 mysql体系结构 连接层 最上层是一些客户端和链接服务&#xff0c;主要完成一些类似于连接处理、授权认证、及相关的安全方案。服务器也会为安全接入的每个客户端验证它所具有的操作权限。服务层 第二层架构主要完成大多数的核心服务功能&#xff0c;如SQL接口&#…

倪海夏的思维逻辑总结

1《天纪》是自然法则&#xff0c;自然法则是个《真理》&#xff0c; 《真理》不需要再证实&#xff0c;《真理》没有二元对立。 《真理》没有例外。 2研究任何学问&#xff08;事物&#xff09;&#xff0c;批判去看&#xff0c;假设--验证--结果。 以果决其行&#xff0…

10个顶级的论文降重指令,让你的论文降重至1.9%

10个顶级的论文降重指令&#xff0c;本硕博写论文必备&#xff01; 在ChatGPT4o对话框中输入&#xff1a;写一个Spring BootVue实现的车位管理系统的论文大纲&#xff0c;并对其具体章节进行详细描述。 几小时即可完成一份1万字论文的编写 在GPTS中搜索论文降重&#xff0c;使…

Milvus 使用过程中的常见问题集锦

引言 在使用Milvus的过程中&#xff0c;可能会遇到一些常见问题。这些问题可能涉及到配置、查询、数据同步等方面。 常见问题 以下是一些可能遇到的常见问题及其解决方法&#xff1a; 查询结果不正确&#xff1a; 可能原因&#xff1a;Milvus内部缓存与数据不一致&#xff0…

2024 电工杯高校数学建模竞赛(B题)数学建模完整思路+完整代码全解全析

你是否在寻找数学建模比赛的突破点&#xff1f;数学建模进阶思路&#xff01; 作为经验丰富的数学建模团队&#xff0c;我们将为你带来2024电工杯数学建模竞赛&#xff08;B题&#xff09;的全面解析。这个解决方案包不仅包括完整的代码实现&#xff0c;还有详尽的建模过程和解…

Aware接口作用

介绍 Aware&#xff08;感知&#xff09;接口是一个标记&#xff0c;里面没有任何方法,实际方法定义都是子接口确定&#xff08;相当于定义了一套规则&#xff0c;并建议子接口中应该只有一个无返回值的方法&#xff09;。 我们知道spring已经定义好了很多对象&#xff0c;如…

2024 电工杯高校数学建模竞赛(A题)| 储能配置 |建模秘籍文章代码思路大全

铛铛&#xff01;小秘籍来咯&#xff01; 小秘籍团队独辟蹊径&#xff0c;运用负载均衡&#xff0c;多目标规划等强大工具&#xff0c;构建了这一题的详细解答哦&#xff01; 为大家量身打造创新解决方案。小秘籍团队&#xff0c;始终引领着建模问题求解的风潮。 抓紧小秘籍&am…

微信小程序uniapp+django洗脚按摩足浴城消费系统springboot

原生wxml开发对Node、预编译器、webpack支持不好&#xff0c;影响开发效率和工程构建。所以都会用uniapp框架开发 前后端分离&#xff0c;后端给接口和API文档&#xff0c;注重前端,接近原生系统 使用Navicat或者其它工具&#xff0c;在mysql中创建对应名称的数据库&#xff0…

cn.hutool.poi.excel 实现excel导出效果 首行高度,行样式,颜色,合并单元格,例子样式

需求 接了需求&#xff0c;下载excel模版&#xff0c;本来看着还是简单的&#xff0c;然后实现起来一把泪&#xff0c;首先是使用poi&#xff0c;我查了好久&#xff0c;才实现&#xff0c;然后是我用easyexcel又实现了一遍&#xff0c;用了一个周多才实现。 这是需求&#x…

Python使用virtualenv创建虚拟环境

目录 第一步&#xff1a;安装virtualenv 第二步&#xff1a;选择一个文件夹用来放所创建的虚拟环境 第三步&#xff1a;创建虚拟环境 第四步&#xff1a;激活虚拟环境 第五步&#xff1a;退出虚拟环境 第六步&#xff1a;测试安装django 前提&#xff1a;你得有个python环…

【STL专题】深入探索C++之std::string:不止于字符串【万字详解】

欢迎来到CILMY23的博客 &#x1f3c6;本篇主题为&#xff1a;深入探索C之std::string&#xff1a;不止于字符串 &#x1f3c6;个人主页&#xff1a;CILMY23-CSDN博客 &#x1f3c6;系列专栏&#xff1a;Python | C | C语言 | 数据结构与算法 | 贪心算法 | Linux &#x1f3…

aardio - godking.vlistEx虚表点击表头全选、排序

新版虚表内置了名称为 DefaultCheckedImg 和 DefaultUnCheckedImg 的两张图片&#xff0c;分别为 【选择框勾选状态默认图片】 和 【选择框未勾选状态默认图片】 以下代码调用了这两张图片&#xff0c;所以请将虚表库升级为最新版。 如果使用旧版库&#xff0c;可以自行添加这…

【Python自动化测试】:Unittest单元测试与HTMLTestRunner自动生成测试用例的好帮手

读者大大们好呀&#xff01;&#xff01;!☀️☀️☀️ &#x1f525; 欢迎来到我的博客 &#x1f440;期待大大的关注哦❗️❗️❗️ &#x1f680;欢迎收看我的主页文章➡️寻至善的主页 文章目录 &#x1f525;前言&#x1f680;unittest编写测试用例&#x1f680;unittest测…

六种常用设计模式

单例设计模式 单例模式指在整个系统生命周期里&#xff0c;保证一个类只能产生一个实例&#xff0c;确保该类的唯一性。 单例模式分类 单例模式可以分为懒汉式和饿汉式&#xff0c;两者之间的区别在于创建实例的时间不同&#xff1a; 懒汉式&#xff1a;指系统运行中&#…