Spark基础--TOP值程序

程序功能要求:输入一张成绩单,输出总成绩前5名及单科成绩前5名

import  java.io.File    
import  scala.io.Source
var  data=Source.fromFile("D:\\01.txt")("UTF-8")     //导入成绩单,三科成绩分别为数学,英语,程序设计。在后面指定编码格式UTF-8
var   strs=data.getLines.toList     //获取成绩单文件中的每一行数据,并将成绩单数据转换为列表形式,方便调用foreach、map、sortBY等方法
println("导入的成绩单为:\n")
strs.foreach(println)                                             //遍历输出,容器类型可用foreach方法直接遍历
var    abc=strs.map(_.split("\t"))                          //以制表符\t 将数据分开
var    efg=abc.map(s=>(s(0),s(1),s(2).trim(),s(3).trim(),s(4).trim()))   //用trim()方法去掉各科成绩中的空格
var   hik=efg.map(s=>(s._1,s._2,s._3.toInt,s._4.toInt,s._5.toInt))      //将各科成绩转换为整数类型
var   mln=hik.map(s=>(s._1,s._2,s._3,s._4,s._5,(s._3+s._4+s._5)))   //增加一列,计算总成绩
println("查看成绩单,最后一列为总成绩:\n")
mln.foreach(println)              //查看成绩单
var   sum=mln.sortBy(x=>x._6).reverse     //通过sortBy方法,对总成绩进行排序(降序排),总成绩在第6列,排序依据为x._6
println("总成绩前5名是:\n")
sum.take(5).foreach(x=>println(x._1+" "+x._2+" "+x._6))     //输出总成绩前五的同学
var   Math=mln.sortBy(x=>x._3).reverse      //对数学成绩进行排序,数学成绩在第3列,排序依据为x._3
println("数学成绩前5名是:\n")
Math.take(5).foreach(x=>println(x._1+" "+x._2+" "+x._3))     //输出数学成绩前五的同学
var   English=mln.sortBy(x=>x._4).reverse     //对英语成绩进行排序,英语成绩在第4列,排序依据为x._4
println("英语成绩前5名是:\n")
English.take(5).foreach(x=>println(x._1+" "+x._2+" "+x._4))    //输出英语成绩前五的同学
var   Programing=mln.sortBy(x=>x._5).reverse     //对程序设计成绩进行排序,程序设计成绩在第5列,排序依据为x._5
println("程序设计成绩前5名是:\n")
Programing.take(5).foreach(x=>println(x._1+" "+x._2+" "+x._5))     //输出程序设计成绩前五的同学

01.txt内容为:

 执行结果为:

 

 

 


 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值