广告企业网站源码,武义县网站建设公司,学室内设计就是失业,嘉兴网1.前期准备
#xff08;1#xff09;建议先把这两篇文章都看一下吧#xff0c;然后把这个项目也搞下来 #xff08;2#xff09;看看这个任务 #xff08;3#xff09;score.txt
student_id,course_code,score
108,3-105,99
105,3-105,88
107,3-105,77
105,3-245,87
1…1.前期准备
1建议先把这两篇文章都看一下吧然后把这个项目也搞下来 2看看这个任务 3score.txt
student_id,course_code,score
108,3-105,99
105,3-105,88
107,3-105,77
105,3-245,87
108,3-245,89
107,3-245,82
106,3-245,74
107,6-101,75
108,6-101,82
106,6-101,65
109,6-102,99
101,6-102,79
105,9-106,81
106,9-106,97
107,9-106,65
108,9-106,100
109,9-106,82
105,6-102,85
4student.txt
student_id,student_name,gender,birthday,class_id
108,ZhangSan,male,1995/9/1,95033
105,KangWeiWei,female,1996/6/1,95031
107,GuiGui,male,1992/5/5,95033
101,WangFeng,male,1993/8/8,95031
106,LiuBing,female,1996/5/20,95033
109,DuBingYan,male,1995/5/21,95031
5teacher.txt
teacher_id,teacher_name,gender,birthday,title,department
825,LinYu,male,1958/1/1,Associate professor,department of computer
804,DuMei,female,1962/1/1,Assistant professor,computer science department
888,RenLi,male,1972/5/1,Lecturer,department of electronic engneering
852,GongMOMO,female,1986/1/5,Associate professor,computer science department
864,DuanMu,male,1985/6/1,Assistant professor,department of computer
6course.txt
course_code,course_name,teacher_id
3-105,Introduction to computer,825
3-245,The operating system,804
6-101,Spark SQL,888
6-102,Spark,852
9-106,Scala,864
7代码准备
创建文件名为task7.scala
代码为
package com.itheimaimport org.apache.spark.sql.SparkSession//spark-sql
object task7 {def main(args: Array[String]): Unit {// 创建SparkSessionval spark SparkSession.builder.appName(task7).master(local).getOrCreate()var teacher_pathsrc\\main\\resources\\teacher.txtvar teacher_dfspark.read.options(Map(sep-,, header-true)).csv(teacher_path)var student_path src\\main\\resources\\student.txtvar student_df spark.read.options(Map(sep - ,, header - true)).csv(student_path)var score_path src\\main\\resources\\score.txtvar score_df spark.read.options(Map(sep - ,, header - true)).csv(score_path)var course_path src\\main\\resources\\course.txtvar course_df spark.read.options(Map(sep - ,, header - true)).csv(course_path)spark.stop()}}2.任务实现
1按照班级降序排序显示所有学生信息
代码1 student_df.sort(student_df(class_id).desc).show()截图1 2查询“计算机系”与“电子工程系“不同职称的教师的Tname和Prof
代码1 var tdepartmentteacher_df(department)teacher_df.filter(tdepartment.contains(electronic)||tdepartment.contains(computer)).select(teacher_name,title).show()
截图1 3显示student表中记录数
代码1 println(student_df.count())截图1 4显示性别为男的教师信息
代码1 var tsexteacher_df(gender)teacher_df.filter(tsexmale).show()
截图1 5显示不重复的教师部门信息
代码1 teacher_df.select(department).distinct().show()截图1 6显示学号为101的学生信息
代码1 var stu_idstudent_df(student_id)student_df.filter(stu_id101).show()
截图1 7将教师信息以List的形式显示
代码1 teacher_df.collect().toList.foreach(println)截图1 8查询所有“女”教师和“女”同学的name、sex和birthday
代码1 //lit 函数用于创建一个字面量常量列//col 函数用于引用 DataFrame 中的列var t_resteacher_df.filter(col(gender)female).select(col(teacher_name).as(name),col(gender),col(birthday),lit(teacher).as(type))var stu_res student_df.filter(col(gender) female).select(col(student_name).as(name),col(gender), col(birthday),lit(student).as(type))t_res.union(stu_res).show()
截图1 3.补充笔记
1这两个上课时老师没有讲到但是有用
导入这些库才能使用这些函数
import org.apache.spark.sql.functions.col
import org.apache.spark.sql.functions.lit
//lit 函数用于创建一个字面量常量列
//col 函数用于引用 DataFrame 中的列
2导入函数库要注意
在 Scala 语言中_下划线是一个特殊的符号具有多种用途。在 import 语句中_ 用来表示“所有”是一种通配符。
当你看到这样的导入语句
scala复制
import org.apache.spark.sql.functions._
这里的 _ 表示导入 org.apache.spark.sql.functions 包中的所有公共成员包括类、对象、函数等。这样做的好处是可以让你在后续的代码中直接使用该包中的所有函数和类而无需再次指定完整的包名。例如你可以直接使用 col、lit 等函数而不需要写成 org.apache.spark.sql.functions.col、org.apache.spark.sql.functions.lit。
不过这种导入方式也有缺点可能会导致命名冲突特别是当你从多个包中导入所有成员时如果有两个包中存在同名的成员就会出现冲突。因此在一些情况下更推荐使用具体的导入方式明确指定需要导入的成员以避免潜在的冲突。
3有关这四个txt文件的注释如下
这4份数据分别代表了课程信息、学生成绩、学生信息和教师信息下面分别进行解析
课程信息 字段说明 course_code课程代码如“3-105”“3-245”等是课程的唯一标识。 course_name课程名称如“Introduction to computer”“The operating system”等表明课程的具体内容。 teacher_id教师编号如“825”“804”等表示教授该课程的教师。 数据内容 共有5门课程涵盖了计算机基础、操作系统、Spark相关知识以及Scala语言等领域课程代码、名称和对应的教师编号一一对应。
学生成绩 字段说明 student_id学生编号如“108”“105”等是学生的唯一标识。 course_code课程代码与课程信息表中的课程代码相对应表示学生所选修的课程。 score分数如“99”“88”等表示学生在该课程中的成绩。 数据内容 每位学生选修了不同数量的课程如学生105选修了3门课程学生107选修了3门课程等。不同学生在相同课程中的成绩有高有低例如在“3-105”这门课中学生108得了99分学生105得了88分学生107得了77分。
学生信息 字段说明 student_id学生编号与学生成绩表中的学生编号相对应。 student_name学生姓名如“ZhangSan”“KangWeiWei”等表明学生的具体身份。 gender性别如“male”“female”表示学生的性别。 birthday生日如“1995/9/1”“1996/6/1”等记录学生的出生日期。 class_id班级编号如“95033”“95031”表示学生所在的班级。 数据内容 共有6名学生姓名、性别、生日和班级编号等信息齐全。从生日来看学生年龄有大有小如GuiGui生于1992年而KangWeiWei生于1996年。从班级编号来看学生分布在95031班和95033班两个班级。
教师信息 字段说明 teacher_id教师编号与课程信息表中的教师编号相对应。 teacher_name教师姓名如“LinYu”“DuMei”等表明教师的具体身份。 gender性别如“male”“female”表示教师的性别。 birthday生日如“1958/1/1”“1962/1/1”等记录教师的出生日期。 title职称如“Associate professor”“Assistant professor”“Lecturer”表示教师的专业技术职称。 department系别如“department of computer”“computer science department”“department of electronic engneering”表示教师所在的系别。 数据内容 共有5名教师姓名、性别、生日、职称和系别等信息完整。从职称来看有副教授、助理教授和讲师等不同职称。从系别来看教师分布在计算机系、计算机科学系和电子工程系等不同系别。