综合练习:学生课程分数
网盘下载sc.txt文件,分别创建RDD、DataFrame和临时表/视图;

分别用RDD操作、DataFrame操作和spark.sql执行SQL语句实现以下数据分析:
-
总共有多少学生?
- scm.map(lambda a:a[0]).distinct().count()
![]()
-
![]()
-
总共开设了多少门课程?
- scm.map(lambda a:a[1]).distinct().count()
-
每个学生选修了多少门课?
- scm.map(lambda a:(a[0],a[1])).countByKey()
-
每门课程有多少个学生选?
- scm.map(lambda a:a[1]).countByValue()
- 每门课程>95分的学生人数
- scm.filter(lambda a:a[2]>95).map(lambda a:a[1]).countByValue()
-
课程'Python'有多少个100分?
- scm.filter(lambda a:a[1]=='Python').map(lambda a:a[2]).countfByValue()[100]
-
Tom选修了几门课?每门课多少分?
- scm.filter(lambda a:a[0]=='Tom').count()
- scm.filter(lambda a:a[0]=='Tom').collect()
-
Tom的成绩按分数大小排序。
- scm.filter(lambda a:[0]=='Tom').map(lambda a:(a[1],a[2])).sortBy(lambda a:a[2],False).collect()
-
Tom选修了哪几门课?
-
Tom的平均分。
- import numpy as np np.mean(list(map(int,scm.map(lambda a:(a[0],a[2])).lookup('Tom'))))
-
'OperatingSystem'不及格人数
-
'OperatingSystem'平均分
-
'OperatingSystem'90分以上人数
-
'OperatingSystem'前3名
- scm.filter(lambda a:a[1]=='OperatingSystem').map(lambda a:(a[0],a[2])).sortBy(lambda a:a[2],False).take(3)
-
每个分数按比例+20平时分。
-
求每门课的平均分
-
选修了7门课的有多少个学生?
-
每门课大于95分的学生数


浙公网安备 33010602011771号