首页 > 其他分享 >Spark基础能力自测题

Spark基础能力自测题

时间:2022-11-14 18:32:41浏览次数:52  
标签:map 13 12 自测题 val 能力 split ._ Spark


持之以恒,贵在坚持,每天进步一点点!

前言

就来分享一位粉丝提供的关于 Spark 的入门测试练习,希望大家看完有所收获!


Spark基础能力自测题_读取文件

        首先让我们准备好该题所需的数据 test.txt

        数据结构如下依次是:班级 姓名 年龄 性别 科目 成绩

12 宋江 25 男 chinese 50
12 宋江 25 男 math 60
12 宋江 25 男 english 70
12 吴用 20 男 chinese 50
12 吴用 20 男 math 50
12 吴用 20 男 english 50
12 杨春 19 女 chinese 70
12 杨春 19 女 math 70
12 杨春 19 女 english 70
13 李逵 25 男 chinese 60
13 李逵 25 男 math 60
13 李逵 25 男 english 70
13 林冲 20 男 chinese 50
13 林冲 20 男 math 60
13 林冲 20 男 english 50
13 王英 19 女 chinese 70
13 王英 19 女 math 80
13 王英 19 女 english 70

         题目先为大家展示出来,答案见文末~

1.   读取文件的数据test.txt

2.   一共有多少个小于20岁的人参加考试?

3.   一共有多少个等于20岁的人参加考试?

4.   一共有多少个大于20岁的人参加考试?

5.   一共有多个男生参加考试?

6.   一共有多少个女生参加考试?

7.   12班有多少人参加考试?

8.  13班有多少人参加考试?

9.   语文科目的平均成绩是多少?

10. 数学科目的平均成绩是多少?

11. 英语科目的平均成绩是多少?

12. 每个人平均成绩是多少?

13. 12班平均成绩是多少?

14. 12班男生平均总成绩是多少?

15. 12班女生平均总成绩是多少?

16. 13班平均成绩是多少?

17. 13班男生平均总成绩是多少?

18. 13班女生平均总成绩是多少?

19. 全校语文成绩最高分是多少?

20. 12班语文成绩最低分是多少?

21. 13班数学最高成绩是多少?

22. 总成绩大于150分的12班的女生有几个?

23. 总成绩大于150分,且数学大于等于70,且年龄大于等于19岁的学生的平均成绩是多少?


答案马上来咯,Ready?Go

Spark基础能力自测题_读取文件_02

/*
* @Auther: 程序员 Andy
* @Date: 2019/4/7 12:18
* @Description:
流年笑掷 未来可期。以梦为马,不负韶华!
*/
object test {

def main(args: Array[String]): Unit = {

val config = new SparkConf().setMaster("local[*]").setAppName("test")
val sc = new SparkContext(config)

// 1.读取文件的数据test.txt
// 返回包含所有行数据的列表
val data: RDD[String] = sc.textFile("YOUR_PATH\\test.txt")

//val value: RDD[Array[String]] = sc.makeRDD(List("12 宋江 25 男 chinese 50")).map(x=>x.split(" "))

// 2. 一共有多少个小于20岁的人参加考试? 2
val count1: Long = data.map(x=>x.split(" ")).filter(x=>x(2).toInt<20).groupBy(_(1)).count()


// 3. 一共有多少个等于20岁的人参加考试? 2
val count2: Long = data.map(x=>x.split(" ")).filter(x=>x(2).toInt==20).groupBy(_(1)).count()

// 4. 一共有多少个大于20岁的人参加考试? 2
val count3: Long = data.map(x=>x.split(" ")).filter(x=>x(2).toInt>20).groupBy(_(1)).count()

// 5. 一共有多个男生参加考试? 4
val count4: Long = data.map(x=>x.split(" ")).filter(x=>x(3).equals("男")).groupBy(_(1)).count()

// 6. 一共有多少个女生参加考试? 2
val count5: Long = data.map(x=>x.split(" ")).filter(x=>x(3).equals("女")).groupBy(_(1)).count()

// 7. 12班有多少人参加考试? 3
val count6: Long = data.map(x=>x.split(" ")).filter(x=>x(0).equals("12")).groupBy(_(1)).count()

// 8. 13班有多少人参加考试? 3
val count7: Long = data.map(x=>x.split(" ")).filter(x=>x(0).equals("13")).groupBy(_(1)).count()

// 9. 语文科目的平均成绩是多少? 58.333333333333336
val mean1 = data.map(x=>x.split(" ")).filter(x=>x(4).equals("chinese")).map(x=>x(5).toInt).mean()

// 10. 数学科目的平均成绩是多少? 63.333333333333336
val mean2 = data.map(x=>x.split(" ")).filter(x=>x(4).equals("math")).map(x=>x(5).toInt).mean()

// 11. 英语科目的平均成绩是多少? 63.333333333333336
val mean3 = data.map(x=>x.split(" ")).filter(x=>x(4).equals("english")).map(x=>x(5).toInt).mean()

// 12. 每个人平均成绩是多少?
//(王英,73)
//(杨春,70)
//(宋江,60)
//(李逵,63)
//(吴用,50)
//(林冲,53)
val every_socre: RDD[(String, Any)] = data.map(x=>x.split(" ")).map(x=>(x(1),x(5).toInt)).groupByKey().map(t=>(t._1,t._2.sum /t._2.size))

// 13. 12班平均成绩是多少? 60.0
var mean5 = data.map(x => x.split(" ")).filter(x => x(0).equals("12")).map(x => x(5).toInt).mean()

// 14. 12班男生平均总成绩是多少? 165.0
// (宋江,180)
// (吴用,150)
val boy12_avgsocre: Double = data.map(x=>x.split(" ")).filter(x=>x(0).equals("12") && x(3).equals("男")).map(x=>(x(1),x(5).toInt)).groupByKey().map(t=>(t._1,t._2.sum)).map(x=>x._2).mean()

// 15. 12班女生平均总成绩是多少? 210.0
// (杨春,210)
val girl12_avgsocre: Double = data.map(x=>x.split(" ")).filter(x=>x(0).equals("12") && x(3).equals("女")).map(x=>(x(1),x(5).toInt)).groupByKey().map(t=>(t._1,t._2.sum)).map(x=>x._2).mean()

// 16. 13班平均成绩是多少? 63.333333333333336
var mean8 = data.map(x => x.split(" ")).filter(x => x(0).equals("13")).map(x => x(5).toInt).mean()

// 17. 13班男生平均总成绩是多少? 175.0
//(李逵,190)
//(林冲,160)
val boy13_avgsocre: Double = data.map(x=>x.split(" ")).filter(x=>x(0).equals("13") && x(3).equals("男")).map(x=>(x(1),x(5).toInt)).groupByKey().map(t=>(t._1,t._2.sum)).map(x=>x._2).mean()

// 18. 13班女生平均总成绩是多少?
//(王英,220)
val girl13_avgsocre: Double = data.map(x=>x.split(" ")).filter(x=>x(0).equals("13") && x(3).equals("女")).map(x=>(x(1),x(5).toInt)).groupByKey().map(t=>(t._1,t._2.sum)).map(x=>x._2).mean()

// 19. 全校语文成绩最高分是多少? 70
var max1 = data.map(x => x.split(" ")).filter(x => x(4).equals("chinese")).map(x => x(5).toInt).max()

// 20. 12班语文成绩最低分是多少? 50
var max2 = data.map(x => x.split(" ")).filter(x => x(4).equals("chinese") && x(0).equals("12")).map(x => x(5).toInt).min()

// 21. 13班数学最高成绩是多少? 80
var max3 = data.map(x => x.split(" ")).filter(x => x(4).equals("math") && x(0).equals("13")).map(x => x(5).toInt).max()

// 22. 总成绩大于150分的12班的女生有几个? 1
//(杨春,210)
val count12_gt150girl: Long = data.map(x=>x.split(" ")).filter(x=>x(0).equals("12") && x(3).equals("女")).map(x=>(x(1),x(5).toInt)).groupByKey().map(t=>(t._1,t._2.sum)).filter(x=>x._2>150).count()

// 23. 总成绩大于150分,且数学大于等于70,且年龄大于等于19岁的学生的平均成绩是多少?
//val countall: Long = data.map(x=>x.split(" ")).filter(x=>x(2).toInt>=19 && x(3).equals("女")).map(x=>(x(1),x(5).toInt)).groupByKey().map(t=>(t._1,t._2.sum)).filter(x=>x._2>150).count()
val complex1 = data.map(x => {val line = x.split(" "); (line(0)+","+line(1)+","+line(3),line(5).toInt)})
//(13,李逵,男 , 60)
val complex2 = data.map(x => {val line = x.split(" "); (line(0)+","+line(1)+","+line(2)+","+line(3)+","+line(4),line(5).toInt)})
//(12,宋江,男,chinese , 50)

// 过滤出总分大于150的,并求出平均成绩 (13,李逵,男,(60,1)) (13,李逵,男,(190,3)) 总成绩大于150 (13,李逵,男,63)
val com1: RDD[(String, Int)] = complex1.map(x=>(x._1,(x._2,1))).reduceByKey((a, b)=>(a._1+b._1,a._2+b._2)).filter(a=>(a._2._1>150)).map(t=>(t._1,t._2._1/t._2._2))
// 注意:reduceByKey 自定义的函数 是对同一个key值的value做聚合操作
//(12,杨春,女 , 70)
//(13,王英,女 , 73)
//(12,宋江,男 , 60)
//(13,林冲,男 , 53)
//(13,李逵,男 , 63)

//过滤出 数学大于等于70,且年龄大于等于19岁的学生 filter方法返回一个boolean值 【数学成绩大于70并且年龄>=19】 为了将最后的数据集与com1做一个join,这里需要对返回值构造成com1格式的数据
val com2: RDD[(String, Int)] = complex2.filter(a=>{val line = a._1.split(",");line(4).equals("math") && a._2>=70 && line(2).toInt>=19}).map(a=>{val line2 = a._1.split(",");(line2(0)+","+line2(1)+","+line2(3),a._2.toInt)})
//(12,杨春,女 , 70)
//(13,王英,女 , 80)

// val common: RDD[(String, (Int, Int))] = com1.join(com2)
// common.foreach(println)
// (12,杨春,女 , (70,70))
// (13,王英,女 , (73,80))

// 使用join函数聚合相同key组成的value元组
// 再使用map函数格式化元素
val result = com1.join(com2).map(a =>(a._1,a._2._1))
//(12,杨春,女,70)
//(13,王英,女,73)
//到这里就大功告成了!!!!!!!!!!

}
}

        可以发现这位粉丝朋友提供的代码中,对于每一题都有较为详细的注释,并且将每题的答案都标注在了题目的周围,细致的小伙伴们可以参考一下。

        (PS:考虑到现在写一篇纯粹的技术文要花费5,6个小时的时间,所以笔者决定暂定周末发一些非技术文的内容,例如练习或者写点人生感悟,然后再把下周的肝货备好,这样大家就能在正常的工作日每天零点收到小菌的推送了|ू・ω・` ))




Spark基础能力自测题_数据_03


标签:map,13,12,自测题,val,能力,split,._,Spark
From: https://blog.51cto.com/u_15105906/5849843

相关文章

  • 详解 Spark Core 调优之数据倾斜调优(建议收藏)
    大家好,我是梦想家Alex,今天我想给大家分享一篇详解SparkCore调优的文章,本文较长,可以先收藏转发,再细细阅读....文章目录一、调优概述二、数据倾斜发生时的现象三、数据倾......
  • AR Engine光照估计能力,让虚拟物体在现实世界更具真实感
    AR是一项现实增强技术,即在视觉层面上实现虚拟物体和现实世界的深度融合,打造沉浸式AR交互体验。而想要增强虚拟物体与现实世界的融合效果,光照估计则是关键能力之一。人们所......
  • 如何在虚拟机上安装和配置Spark开发环境
    如何文章目录​​如何​​​​在虚拟机上安装和配置Spark开发环境​​​​下载解压安装包​​​​配置环境变量:​​​​修改Spark配置文件​​​​校验​​在虚拟机上安装和......
  • Spark之Scala
    Spark之Scala文章目录​​Spark之Scala​​​​什么是Scala:​​​​Scala简介​​​​Scala的特点是什么:​​​​Scala的运行方式:​​​​介绍三种Scala代码编译执行的方......
  • 能力提升综合题单-模拟,前缀和差分 题解
    好久没有写题解了,今天回来了!!A-铺地毯在luogu,享受coding的快乐见到题以后,一道水题直接模拟二位数组。。。《真·ACcode》:点击查看代码#include<bits/stdc++.h>u......
  • 2022.11.12 C.The Seven-Sparkling-Star Card Game(大模拟)
    ProblemTheSeven-Sparkling-StarCardGame(七星卡牌)游戏是Illumina_矿业无限游戏公司的最新力作。基本游戏规则:对战双方各持\(n\)张卡牌,其中\(n\)是\(7\)的......
  • (作者推荐)【RocketMQ入门到精通】— RocketMQ中级特性能力 | ​长轮询Pull和Push模式
    名言警句任何先进的技术均与魔法无异追本溯源【​​经历了6个月的失踪,我将带着干货终究归来!【RocketMQ入门到精通】​​】RocketMQ消费机制回顾   在众多MQ的体系中,一......
  • 测试架构需要具备哪些能力
    转载:https://www.cnblogs.com/imyalost/p/16834322.html这篇文章是软件工程系列知识总结的第五篇,同样我会以自己的理解来阐述软件工程中关于架构设计相关的知识。相比于......
  • 检索的能力
    图书馆搜索引擎的使用:基本使用google>bing>baidu与:空格;或:|;非:-site语法site语法表示搜索结果局限于某个网站或者网站频道,也可以用于限制网站类型,如,学术资料在edu、or......
  • 数据安全出境系列——数据审计能力
    在之前的“数据安全出境系列”文章中我们对数据安全“五能”的三个能力进行了讲解,分别是《数据安全出境系列——数据识别能力》、《数据安全出境系列——数据安全控制能力》......