Spark & Scala scala编程案例:统计学生成绩
Posted _大木_
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spark & Scala scala编程案例:统计学生成绩相关的知识,希望对你有一定的参考价值。
Scala 统计学生成绩
题干
学生的成绩清单格式如下所示,第一行为表头,各字段意思分别为学号、性别、课程名 1、课程名 2 等,后面每一行代表一个学生的信息,各字段之间用空白符隔开
Id gender Math English Physics
301610 male 80 64 78
301611 female 65 87 58
…
给定任何一个如上格式的清单(不同清单里课程数量可能不一样),要求尽可能采用函 数式编程,统计出各门课程的平均成绩,最低成绩,和最高成绩;另外还需按男女同学分开, 分别统计各门课程的平均成绩,最低成绩,和最高成绩。
源代码(命令台交互式)
import scala.io.Source
val inputfile=Source.fromFile("/home/beyond-dhl/Desktop/dhl/grade1.txt")
val lines = inputfile.getLines
val Data = lines.map_.split(" ")
val header = originalData.head
val courseNames = header.drop(2)
val allStudents = originalData.tail
val stuNum = allStudents.length
val (maleLines,femaleLines) = allStudents partition _(1)=="male"
val courseNum = courseNames.length
for(i <- 2 to courseNum+1)
| val temp = allStudents map elem => elem(i).toDouble;
| println("for xun huan jie guo:temp,avg,max,min");
| println(temp.sum/stuNum,temp.min,temp.max)
val result =
| (for (i <-2 to courseNum+1) yield
| val temp1 = allStudents map elem => elem(i).toDouble;(temp1.sum/stuNum, temp1.min, temp1.max)
| )
for(i <- 0 to courseNum-1)
| println(courseNames(i));println("avg,min,max:");println(result(i))
相应结果
以上是关于Spark & Scala scala编程案例:统计学生成绩的主要内容,如果未能解决你的问题,请参考以下文章