SparkSQL练习:对学生选课成绩进行分析计算

打印 上一主题 下一主题

主题 846|帖子 846|积分 2540

标题内容:
对学生选课成绩进行分析计算

标题要求:
(1)该系总共有多少学生;
(2)该系共开设来多少门课程;
(3)每个学生的总成绩多少;
(4)每门课程选修的同砚人数;
(5)每位同砚选修的课程门数;
(6)该系DataBase课程共有多少人选修;
(7)每位同砚平均成绩;

数据预览:
每行数据包括以下三部分内容:学生姓名,所学课程,成绩
每项数据以“,”分隔开


代码实现:
  1. def main(args: Array[String]): Unit = {
  2.   val sparConf = new SparkConf().setMaster("local").setAppName("WordCount")
  3.   val sc = new SparkContext(sparConf) //建立Spark连接
  4.   val spark = SparkSession.builder().getOrCreate()
  5.   val df = spark.read.option("header", "true").csv("E:\\ShuJu\\sparkinput\\batch_test_score\\Data01.csv") //读入文件
  6.   df.show()
  7.   println("(1)该系总共有多少学生")
  8.   val StudentNum = df.groupBy("name").count().collect().length
  9.   println(StudentNum)
  10.   println("(2)该系共开设来多少门课程")
  11.   val CourseNum = df.groupBy("course").count().collect().length
  12.   println(CourseNum)
  13.   println("(3)每个学生的总成绩多少")
  14.   df.select("name", "grade").groupBy("name").agg(sum("grade")).show()
  15.   println("(4)每门课程选修的同学人数")
  16.   df.groupBy("course").count().show()
  17.   println("(5)每位同学选修的课程门数")
  18.   df.select("name", "course").groupBy("name").count().show()
  19.   println("(6)该系DataBase课程共有多少人选修")
  20.   df.select("name", "course").groupBy("course").count().filter("course = 'DataBase'").show()
  21.   println("(7)每位同学平均成绩")
  22.   val grades = df.groupBy("name").agg(sum("grade").alias("总成绩"), count("course").alias("科目数量"))
  23.   val avgGrade = grades.withColumn("平均成绩", grades("总成绩") / grades("科目数量"))
  24.   avgGrade.select(avgGrade("name"), round(avgGrade("平均成绩"), 2).alias("平均成绩")).show()
  25.   sc.stop()
  26. }
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

祗疼妳一个

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表