spark sql的练习题

1、使用Structured Streaming读取Socket数据,把单词和单词的反转组成 json 格式写入到当前目录中的file文件夹中
2、请使用Structured Streaming读取student_info文件夹写的csv文件,
2.1、统计出文件中的男女生各有多少人
2.2、统计出姓“王”男生和女生的各有多少人
3、请使用Structured Streaming读取department_info文件夹写的csv文件
3.1统计出各个院系的分别多少条信息
4、请使用spark sql读取student_score文件夹写的csv文件
4.1、统计出每个班级的最高分数
4.2、统计出男生最高分
4.3、统计出女生最高分
4.4、分别统计出男生和女生的分数前三名
4.5、统计出分数在500分以上的人数
4.7、统计出分数在300分以下的人中男女各占多少
5.请使用Spark sql读取class_info文件夹写的csv文件
5.1、统计出哪个院系的专业最多
5.2、统计出计算机学院中有多少专业
5.3、统计出经济管理学院的会计和工商管理的班级数
5.4、分别统计出每个学院的班级最多的专业
5.5、统计出班级编号以2开头的所有的专业名称
以下是sparksql的练习题
表(一)Student (学生表)
属性名 数据类型 可否为空 含 义
Sno varchar (20) 否 学号
Sname varchar (20) 否 学生姓名
Ssex varchar (20) 否 学生性别
Sbirthday datetime 可 学生出生年月
Class varchar (20) 可 学生所在班级
表(二)Course(课程表)
属性名 数据类型 可否为空 含 义
Cno varchar (20) 否 课程号
Cname varchar (20) 否 课程名称
Tno varchar (20) 否 教工编号
表(三)Score(成绩表)
属性名 数据类型 可否为空 含 义
Sno varchar (20) 否 学号
Cno varchar (20) 否 课程号
Degree Decimal(4,1) 可 成绩
表(四)Teacher(教师表)
属性名 数据类型 可否为空 含 义
Tno varchar (20) 否 教工编号
Tname varchar (20) 否 教工姓名
Tsex varchar (20) 否 教工性别
Tbirthday datetime 可 教工出生年月
Prof varchar (20) 可 职称
Depart varchar (20) 否 教工所在部门
表1-2数据库中的数据
表(一)Student
Sno Sname Ssex Sbirthday class
108 丘东 男 1977-09-01 95033
105 匡明 男 1975-10-02 95031
107 王丽 女 1976-01-23 95033
101 李军 男 1976-02-20 95033
109 王芳 女 1975-02-10 95031
103 陆君 男 1974-06-03 95031
表(二)Course
Cno Cname Tno
3-105 计算机导论 825
3-245 操作系统 804
6-166 数字电路 856
9-888 高等数学 831
表(三)Score
Sno Cno Degree
103 3-245 86
105 3-245 75
109 3-245 68
103 3-105 92
105 3-105 88
109 3-105 76
101 3-105 64
107 3-105 91
108 3-105 78
101 6-166 85
107 6-166 79
108 6-166 81
表(四)Teacher
Tno Tname Tsex Tbirthday Prof Depart
804 李诚 男 1958-12-02 副教授 计算机系
856 张旭 男 1969-03-12 讲师 电子工程系
825 王萍 女 1972-05-05 助教 计算机系
831 刘冰 女 1977-08-14 助教 电子工程系
6、查询Student表中“95031”班或性别为“女”的同学记录。
7、以Class降序,升序查询Student表的所有记录。
8、以Cno升序、Degree降序查询Score表的所有记录。
9、查询“95031”班的学生。
10、查询Score表中的最高分的学生学号和课程号。(子查询或者排序)
11、查询每门课的平均成绩。
12、查询Score表中至少有5名学生选修的并以3开头的课程的平均分数。
13、查询分数大于70,小于90的Sno列。
14、查询所有学生的Sname、Cno和Degree列。
15、查询所有学生的Sno、Cname和Degree列。
16、查询所有学生的Sname、Cname和Degree列。
17、查询“95033”班学生的平均分。
18、查询所有选修“计算机导论”课程的“女”同学的成绩表。
19、查询选修“3-105”课程的成绩高于“109”号同学成绩的所有同学的记录。
20、查询score中选学多门课程的同学中分数为非最高分成绩的记录。
21、查询成绩高于学号为“109”、课程号为“3-105”的成绩的所有记录。
22、查询和学号为105的同学同年出生的所有学生的Sno、Sname和Sbirthday列。
23、查询“张旭“教师任课的学生成绩
24、查询选修某课程的同学人数多于4人的教师姓名。
25、查询95033班和95031班全体学生的记录。
26、查询存在有85分以上成绩的课程Cno.
27、查询出“计算机系“教师所教课程的成绩表。
28、查询“计算机系”与“电子工程系“不同职称的教师的Tname和Prof。
29、查询选修编号为“3-105“课程且成绩至少高于选修编号为“3-245”的同学的Cno、Sno和Degree,并按Degree从高到低次序排序。
30、查询选修编号为“3-105”且成绩高于选修编号为“3-245”课程的同学的Cno、Sno和Degree.
31、查询所有教师和同学的name、sex和birthday.
32、查询所有“女”教师和“女”同学的name、sex和birthday.
33、查询成绩比该课程平均成绩低的同学的成绩表。
34、查询所有任课教师的Tname和Depart.
35、查询所有未讲课的教师的Tname和Depart.
36、查询至少有2名男生的班号。
37、查询Student表中不姓“王”的同学记录。
38、查询Student表中每个学生的姓名和年龄。将函数运用到spark sql中去计算,可以直接拿String的类型计算不需要再转换成数值型 默认是会转换成Double类型计算浮点型转整型
39、查询Student表中最大和最小的Sbirthday日期值。 时间格式最大值,最小值
40、以班号和年龄从大到小的顺序查询Student表中的全部记录。 查询结果排序
41、查询“男”教师及其所上的课程。
42、查询最高分同学的Sno、Cno和Degree列。
43、查询和“李军”同性别的所有同学的Sname.
44、查询和“李军”同性别并同班的同学Sname.
45、查询所有选修“计算机导论”课程的“男”同学的成绩表。
46、查询Student表中的所有记录的Sname、Ssex和Class列。
47、查询教师所有的单位即不重复的Depart列。
48、查询Student表的所有记录
49、查询Score表中成绩在60到80之间的所有记录。
50、查询Score表中成绩为85,86或88的记录。
代码:

11、使用Structured Streaming读取Socket数据,把单词和单词的反转组成 json 格式写入到当前目录中的file文件夹中
object day {
   
  //1、请使用Structured Streaming读取Socket数据,统计出每个单词的个数
  def main(args: Array[String]): Unit = {
   
    //1.创建SparkSession
    val spark: SparkSession = SparkSession.builder().master("local[*]").appName("day1").getOrCreate()
    val sc: SparkContext = spark.sparkContext
    sc.setLogLevel("WARN")
    val frame: DataFrame = spark.readStream
      .option("host", "hadoop01")
      .option("port", 9999)
      .format("socket")
      .load()
    import  spark.implicits._
    val dataDS: Dataset[String] = frame.as[String]
    val wordDF = dataDS.flatMap(_.split(" "))
      .map({
    x => (x, x.reverse) }).toDF("before", "reverse")
    //wordDF.show()
    //输出数据
    wordDF.writeStream
      .format("json")
      .option("path","F:\\第四学期的大数据资料\\day02四月份资料\\第二周\\day05\\4.16号练习题50道2.0\\file")
      .option("checkpointLocation","json")//必须指定 checkpoint 目录,否则报错
      .trigger(Trigger.ProcessingTime(0))
      .start()
      .awaitTermination()
  }
}
2、请使用Structured Streaming读取student_info文件夹写的csv文件,
2.1、统计出文件中的男女生各有多少人
2.2、统计出姓“王”男生和女生的各有多少人
object day2 {
   
  def main(args: Array[String]): Unit = {
   
    //创建SparkSession
    val spark: SparkSession =
    SparkSession.builder().master("local[*]").appName("day2").getOrCreate()
    val sc: SparkContext = spark.sparkContext
    sc.setLogLevel("WARN")
    //准备数据结构
    val Schema: StructType = new StructType()
      .add("id", "integer")
      .add("name", "string")
      .add("sex", "string")
      .add("classs", "string")
      .add("date", "string")
    
  • 3
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值