寒假学习报告12

把昨天剩余的Scala基础编程做了,也按要求做了下一个实验的内容

3. 统计学生成绩

学生的成绩清单格式如下所示,第一行为表头,各字段意思分别为学号、性别、课程名 1、课程名 2 等,后面每一行代表一个学生的信息,各字段之间用空白符隔开

给定任何一个如上格式的清单(不同清单里课程数量可能不一样),要求尽可能采用函 数式编程,统计出各门课程的平均成绩,最低成绩,和最高成绩;另外还需按男女同学分开, 分别统计各门课程的平均成绩,最低成绩,和最高成绩。 测试样例 1 如下:

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

import scala.collection.mutable.ArrayBuffer

object exercise4 {
  def main(args: Array[String]): Unit = {
    var students:ArrayBuffer[Student] = new ArrayBuffer[Student]()
    students.append(new Student(301610, "male", 80, 64, 78))
    students.append(new Student(301611, "female", 65, 87, 58))
    students.append(new Student(301612, "female", 44, 71, 77))
    students.append(new Student(301613, "female", 66, 71, 91))
    students.append(new Student(301614, "female", 70, 71, 100))
    students.append(new Student(301615, "male", 72, 77, 72))
    students.append(new Student(301616, "female", 73, 81, 75))
    students.append(new Student(301617, "female", 69, 77, 75))
    students.append(new Student(301618, "male", 73, 61, 65))
    students.append(new Student(301619, "male", 74, 69, 68))
    students.append(new Student(301620, "male", 76, 62, 76))
    students.append(new Student(301621, "male", 73, 69, 91))
    students.append(new Student(301622, "male", 55, 69, 61))
    students.append(new Student(301623, "male", 50, 58, 75))
    students.append(new Student(301624, "female", 63, 83, 93))
    students.append(new Student(301625, "male", 72, 54, 100))
    students.append(new Student(301626, "male", 76, 66, 73))
    students.append(new Student(301627, "male", 82, 87, 79))
    students.append(new Student(301628, "female", 62, 80, 54))
    students.append(new Student(301629, "male", 89, 77, 72))
    println(students.length)
    println(students(1).toString)

    getData(students)
    getDataMale(students)
    getDataFeMale(students)
  }
  def getData(value: ArrayBuffer[Student]): Unit ={
    var Mathaverage:Double=0;
    var MathSum:Double = 0;
    var MathMin:Double = value(0).Math;
    var MathMax:Double = 0;

    var Englishaverage:Double=0;
    var EnglishSum:Double = 0;
    var EnglishMin:Double = value(0).English;
    var EnglishMax:Double = 0;

    var Physicsaverage:Double=0;
    var PhysicsSum:Double = 0;
    var PhysicsMin:Double = value(0).Physics;
    var PhysicsMax:Double = 0;

    var number = value.length;
    for (i <- 0 until value.length){
      //三科总数
      MathSum = value(i).Math+MathSum
      EnglishSum = value(i).English+EnglishSum
      PhysicsSum = value(i).Physics+PhysicsSum
      //最大和最小
      if(value(i).Math>MathMax){
        MathMax=value(i).Math;
      }
      if(value(i).English>EnglishMax){
        EnglishMax=value(i).English;
      }
      if(value(i).Physics>PhysicsMax){
        PhysicsMax=value(i).Physics;
      }
      if(value(i).Math<MathMin){
        MathMin=value(i).Math;
      }
      if(value(i).English<EnglishMin){
        EnglishMin=value(i).English;
      }
      if(value(i).Physics<PhysicsMin){
        PhysicsMin=value(i).Physics;
      }
    }
    //平均值
    Mathaverage=MathSum/number
    Englishaverage=EnglishSum/number
    Physicsaverage=PhysicsSum/number
    println("course\t average\t min\t max \t")
    println("Math:\t   "+Mathaverage+"\t\t"+MathMin+"\t "+MathMax)
    println("English:\t"+Englishaverage+"\t"+EnglishMin+"\t "+EnglishMax)
    println("Physics:\t"+Physicsaverage+"\t"+PhysicsMin+"\t "+PhysicsMax)
  }

  def getDataMale(value: ArrayBuffer[Student]): Unit = {
    var Mathaverage: Double = 0;
    var MathSum: Double = 0;
    var MathMin: Double = value(0).Math;
    var MathMax: Double = 0;

    var Englishaverage: Double = 0;
    var EnglishSum: Double = 0;
    var EnglishMin: Double = value(0).English;
    var EnglishMax: Double = 0;

    var Physicsaverage: Double = 0;
    var PhysicsSum: Double = 0;
    var PhysicsMin: Double = value(0).Physics;
    var PhysicsMax: Double = 0;

    var number = 0;

    for (i <- 0 until value.length) {
      if (value(i).gender.equals("male")) {
        number = number + 1
        //三科总数
        MathSum = value(i).Math + MathSum
        EnglishSum = value(i).English + EnglishSum
        PhysicsSum = value(i).Physics + PhysicsSum
        //最大和最小
        if (value(i).Math > MathMax) {
          MathMax = value(i).Math;
        }
        if (value(i).English > EnglishMax) {
          EnglishMax = value(i).English;
        }
        if (value(i).Physics > PhysicsMax) {
          PhysicsMax = value(i).Physics;
        }
        if (value(i).Math < MathMin) {
          MathMin = value(i).Math;
        }
        if (value(i).English < EnglishMin) {
          EnglishMin = value(i).English;
        }
        if (value(i).Physics < PhysicsMin) {
          PhysicsMin = value(i).Physics;
        }
      }

    }
    //平均值
    Mathaverage=MathSum/number
    Englishaverage=EnglishSum/number
    Physicsaverage=PhysicsSum/number
    println("course\t average\t min\t max \t(Male)")
    Mathaverage=Mathaverage.toInt
    Englishaverage=Englishaverage.toInt
    Physicsaverage=Physicsaverage.toInt
    println("Math:\t   "+Mathaverage+"\t\t"+MathMin+"\t "+MathMax)
    println("English:\t   "+Englishaverage+"\t\t"+EnglishMin+"\t "+EnglishMax)
    println("Physics:\t   "+Physicsaverage+"\t\t"+PhysicsMin+"\t "+PhysicsMax)
  }

  def getDataFeMale(value: ArrayBuffer[Student]): Unit ={
    var Mathaverage:Double=0;
    var MathSum:Double = 0;
    var MathMin:Double = value(1).Math;
    var MathMax:Double = 0;

    var Englishaverage:Double=0;
    var EnglishSum:Double = 0;
    var EnglishMin:Double = value(1).English;
    var EnglishMax:Double = 0;

    var Physicsaverage:Double=0;
    var PhysicsSum:Double = 0;
    var PhysicsMin:Double = value(1).Physics;
    var PhysicsMax:Double = 0;

    var number = 0;

    for (i <- 0 until value.length){
      if(value(i).gender.equals("female")){
        number=number+1
        //三科总数
        MathSum = value(i).Math+MathSum
        EnglishSum = value(i).English+EnglishSum
        PhysicsSum = value(i).Physics+PhysicsSum
        //最大和最小
        if(value(i).Math>MathMax){
          MathMax=value(i).Math;
        }
        if(value(i).English>EnglishMax){
          EnglishMax=value(i).English;
        }
        if(value(i).Physics>PhysicsMax){
          PhysicsMax=value(i).Physics;
        }
        if(value(i).Math<MathMin){
          MathMin=value(i).Math;
        }
        if(value(i).English<EnglishMin){
          EnglishMin=value(i).English;
        }
        if(value(i).Physics<PhysicsMin){
          PhysicsMin=value(i).Physics;
        }
      }
    }
    //平均值
    Mathaverage=MathSum/number
    Englishaverage=EnglishSum/number
    Physicsaverage=PhysicsSum/number
    println("course\t average\t min\t max \t(FeMale)")
    Mathaverage=Mathaverage.toInt
    Englishaverage=Englishaverage.toInt
    Physicsaverage=Physicsaverage.toInt
    println("Math:\t   "+Mathaverage+"\t\t"+MathMin+"\t "+MathMax)
    println("English:\t   "+Englishaverage+"\t\t"+EnglishMin+"\t "+EnglishMax)
    println("Physics:\t   "+Physicsaverage+"\t\t"+PhysicsMin+"\t "+PhysicsMax)
  }
}
class Student(id1:Int,gender1:String,Math1:Double,English1:Double,Physics1:Double){
  var id:Int = id1
  var gender:String = gender1
  var Math:Double = Math1
  var English:Double = English1
  var Physics:Double = Physics1

  override def toString = s"Student($id, $gender, $Math, $English, $Physics)"
}

1.安装 Hadoop 和 Spark
进入 Linux 系统,参照本教程官网“实验指南”栏目的“Hadoop 的安装和使用”,完 成 Hadoop 伪分布式模式的安装。完成 Hadoop 的安装以后,再安装 Spark(Local 模式)。
2.HDFS 常用操作
使用 hadoop 用户名登录进入 Linux 系统,启动 Hadoop,参照相关 Hadoop 书籍或网络 资料,或者也可以参考本教程官网的“实验指南”栏目的“HDFS 操作常用 Shell 命令”,使用 Hadoop 提供的 Shell 命令完成如下操作:

(1) 启动 Hadoop,在 HDFS 中创建用户目录“/user/hadoop”;

(2) 在 Linux 系统的本地文件系统的“/home/hadoop”目录下新建一个文本文件 test.txt,并在该文件中随便输入一些内容,然后上传到 HDFS 的“/user/hadoop” 目录下;

(3) 把 HDFS 中“/user/hadoop”目录下的 test.txt 文件,下载到 Linux 系统的本地文 件系统中的“/home/hadoop/下载”目录下;

(4) 将HDFS中“/user/hadoop”目录下的test.txt文件的内容输出到终端中进行显示;

(5) 在 HDFS 中的“/user/hadoop”目录下,创建子目录 input,把 HDFS 中 “/user/hadoop”目录下的 test.txt 文件,复制到“/user/hadoop/input”目录下;

(6) 删除HDFS中“/user/hadoop”目录下的test.txt文件,删除HDFS中“/user/hadoop” 目录下的 input 子目录及其子目录下的所有内容。


3. Spark 读取文件系统的数据
(1)在 spark-shell 中读取 Linux 系统本地文件“/home/hadoop/test.txt”,然后统计出文 件的行数;

(2)在 spark-shell 中读取 HDFS 系统文件“/user/hadoop/test.txt”(如果该文件不存在, 请先创建),然后,统计出文件的行数;

(3)编写独立应用程序,读取 HDFS 系统文件“/user/hadoop/test.txt”(如果该文件不存在, 请先创建),然后,统计出文件的行数;通过 sbt 工具将整个应用程序编译打包成 JAR 包, 并将生成的 JAR 包通过 spark-submit 提交到 Spark 中运行命


原文地址:https://www.cnblogs.com/baimafeima/p/12300999.html

时间: 2024-11-03 23:08:13

寒假学习报告12的相关文章

寒假学习报告04

今天学习了Scala的剩余的基础内容和安装了spark.sbt. Scala 函数声明格式: def functionName ([参数列表]) : [return type] Scala 函数定义格式: def functionName ([参数列表]) : [return type] = { function body return [expr]} Scala 提供了多种不同的函数调用方式 调用方法的标准格式: functionName( 参数列表 ) 函数使用了实例的对象来调用: [ins

寒假学习记录12

学习任务: 1.python基础 (1)dict Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度. 把数据放入dict的方法,除了初始化时指定外,还可以通过key放入,由于一个key只能对应一个value,所以,多次对一个key放入value,后面的值会把前面的值冲掉. 要避免key不存在的错误,有两种办法,一是通过in判断key是否存在: 二是通过dict提供的get()方法,如果ke

寒假学习报告9

今天外面雾霾严重,请大家出门务必带好口罩,全面遮掩口鼻,不要让飞沫喷出,尽量减少外出,减少去人员密集场所的次数,买菜不要扎堆,在家的各位请注意保持开窗通风,保证室内外空气流通,回家时先消毒,勤洗手,饭前便后请大家保证双手保持洁净的状态.吃饭要吃熟食,切忌生冷.油腻.海鲜等不易消化的食物.多喝水,喝热水,勤洗澡,及时更换衣物,换下来的衣服及时放到洗衣机里面清洗,做到病毒零传播,安全你我他.今天依旧没有出门,在家学习算法与数据结构.没有其他特殊情况,生命体征良好,体温正常,无发烧发热状况. 原文地址

寒假学习进度12

因为重新装了系统,导致之前虚拟机及ubuntu系统环境都没有了.因为马上要开学了,学习大数据环境一定是必备的,今天无论如何都要安装好环境. 最开始学习hadoop的时候,我就自己装过虚拟机还有阿里云esc服务器环境,但是只有云服务器安装成功了.但在具体使用过程中,发现纯命令行的界面以及云服务器的 网络传输实在是非常不方便,所以最后无奈之下拷贝了同学的镜像,也没实际配置虚拟机环境. 原本以为会很简单,但实际操作起来却困难重重.还好vmware workstation pro里面有一个vmwaret

寒假学习报告05

今天在虚拟机上安装sbt和maven,按着林子雨老师的教程来的,也不知道是什么原因老出问题,到现在也没解决好.还学一些简单的爬虫知识. 原文地址:https://www.cnblogs.com/baimafeima/p/12267035.html

寒假学习报告06

学了使用scarpy框架进行爬虫,爬取了某网站的部分信息. 部分代码: # -*- coding: utf-8 -*- import scrapy from dangdang01.items import Dangdang01Item from scrapy.http import Request class DdSpider(scrapy.Spider): name = 'dd' allowed_domains = ['dangdang.com'] start_urls = ['http://

寒假学习进度-12(热词展示)

1.列表 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@page import="dao.*" %> <%@page import="bean.*" %> <%@page import="java.sql.Timestamp

寒假学习报告10

今天继续研究了爬虫 遇到了一些问题,各种查阅资料才得以解决. response.xpath.extract()爬取的值里面含有\r\n\t,如何去掉呢?需要normalize-space()比如:response.xpath('//div[@class=""]/text()').extract()使用normalize-space()后:response.xpath('normalize-space(//div[@class=""]/text())').extrac

寒假学习报告13

实验 4  RDD 编程初级实践 一.实验目的 (1)熟悉 Spark 的 RDD 基本操作及键值对操作: (2)熟悉使用 RDD 编程解决实际具体问题的方法. 二.实验平台 操作系统:Ubuntu16.04 Spark 版本:2.1.0 三.实验内容和要求 1.spark-shell 交互式编程 下载 chapter5-data1.txt,该数据集包含 了某大学计算机系的成绩,数据格式如下所示: 请根据给定的实验数据,在 spark-shell 中通过编程来计算以下内容: 创建目录,将chap