一、单选题

1. 下面的端口不是 Spark 自带的服务端口的是___________。

A. 8080 B. 4040 C. 8090 D. 18080

2. 下面的描述不是 RDD 的特点的是___________。

A. 可分区 B. 可序列化 C. 可修改 D. 可持久化

3. 关于广播变量的描述错误的是___________。

A. 任何函数调用 B. 是只读的

C. 存储在各个节点 D. 存储在磁盘或 HDFS

4. 在启动 pyspark 交互式界面时,采用默认的不指定参数的启动方式属于___________部署方式。

A. standalone B. Spark on mesos

C. Spark on YARN  D. Spark on local

5. pyspark 中,Spark DataFrame 和 Spark SQL 的上下文入口是___________。

A.pyspark.SparkConf B. pyspark.SparkSession

C. pyspark.SparkContext D. pyspark.StreamingContext

6. 下面的操作中,___________肯定是宽依赖。

A. map B. flatMap C. reduceByKey D. sample

7. Spark 持久化默认的存储级别是___________。

A. MEMORY_ONLY B. MEMORY_ONLY_SER

C. MEMORY_AND_DISK D. MEMORY_AND_DISK_SER

8. DataFrame 和 RDD 的最大的区别是___________。

A. 科学统计支持 B. 多了 schema C. 存储方式不一样 D. 外部数据源支持

9. 与 spark 日志相关的配置文件是___________。

A. spark-env.sh B. log4j.properties C. slaves D. profile

10. spark 机器学习库有两种,其中 ml 库是基于___________数据结构的 API。

A. Spark SQL B. DataFrame C. Spark Streaming D. RDD

11. 关于累加器,下列描述错误的是___________。

A. 支持加法 B. 支持数值类型 C. 可并行 D. 不支持自定义类型

12. 下面操作属于窄依赖的是___________。

A. join B. filter C. group D. sort

13. pyspark 中,Spark RDD 的上下文入口是___________。

A. pyspark.SparkConf B. pyspark.SparkSession

C. pyspark.SparkContext D. pyspark.StreamingContext

14. pyspark 中,提供广播变量的操作方法的类是___________。

A. pyspark.SparkConf B. pyspark.Accumulator

C. pyspark.RDD D. pyspark.Broadcast

15.需要基于DataFrame创建出临时表,才能使用SQL语句的是?___________。

A.Spark SQL B.DataFrame

C.Spark Streaming D.GraphX

16.以下哪项是由一系列RDD构成的?___________。

A.StreamingContext B.DStream

C.Spark Streaming D.DAG

17.哪个选项提供常用的学习算法,如分类、回归、聚类等算法?___________。

A.Utilities B.Featurization

C.Pipelines D.ML Algorithms

18.下列RDD操作以数组的形式返回数据集的所有元素的是?___________。

A.reduce B.count

C.collect D.first

19.含有自环的图被称为?___________。

A.多重图 B.伪图

C.二分图 D.连通图

20. 在不改变原有 Key 键的基础上,对 Key-Value 结构 RDD 的 Vaule 值进行

一个 map 操作,分区保持不变。这种操作使用的算子是___________。

  1. mapValues B. flatMapValues

C. combineByKey D. reduceByKey

21. Spark SQL 的创建需要依赖于___________。

A. Spark RDD B. spark DataFrame

C. Spark Streaming D. GraphX

22. Spark Streaming 提供的基础抽象是___________,它表示一系列的数据流。

A. StreamingContext B. Discretized Streams

C. Spark Streaming D. RDD

23. Spark 机器学习库 ml 中,提供用于构建,评估和调整 ML Pipelines 的工具是___________。

A. ML Algorithms B. Featurization

C. Pipelines D. Utilities

24. 下列 RDD 算子中,属于 transform 算子的是___________。

A. collect B. reduce

C. foreach D. union

25.下列RDD操作哪一个返回结构的类型不是以数组形式的?___________。

A.first B.top

C.collect D.take

26.Spark的四大组件中不包括下列哪个选项?___________。

A.Spark Streaming B.MLlib

C.Spark R D.GraphX

27.Spark为包含键值对(key-value)类型的RDD提供了一些专有的操作。这些RDD被称为___________。

A.PairRDD B.KeyRDD

C.key-value RDD D.Value RDD

28.Spark主要有几个特点?___________。

A.3 B.4

C.5 D.6

29.Spark的运行环境搭建不依赖于?___________。

A.Java B.Scala

C.Spark D.Python

30.哪个选项以 RDD 为基础并将数据整理成表格形式?___________。

A.Spark SQL B.DataFrame

C.Spark Streaming D.GraphX

31.下列选项属于DStream输出操作的是?___________。

A.map B.flatMap

C.reduceByKey D.pprint

32. 下列方法可以对 Spark RDD 进行持久化的是___________。

A. persist B. save

C. print D. collect

33.哪个选项是Spark为Python开发者提供的API?___________。

A.PySpark B.Python Spark

C.Scala D.Spark SQL

34.进入web监控页面看到Spark Master at spark://host:port,属于哪种启动模式?___________。

A.local B.mesos

C.yarn D.standalone

35.哪个选项是Spark最基础最核心的部分?___________。

A.Spark Streaming B.Spark SQL

C.RDD D.MLlib

二、填空题

1.mllib是基于RDD的api,ml是基于DataFrame的api。

2. 根据代码填空:

sc=SparkContext("spark://10.92.16.21:7077","app")

sc.setLogLevel("WARN")

data =[1,2,3,4,5,6]

dist =sc.paralellize(data,3)

dist2 =rdd.map(lambda x:x*2)

dist2.persist()

dist3 =dist.intersection(dist2)

dist3.collect()

上述代码使用的 Spark 运行模式是___Standalone____;日志级别是____WARN____;变量名为 dist 的这个 RDD 变量有___3__分区(partition);代码 dist2.persist()的作用是__统计文件中字符数量_______;代码dist3.collect()的输出结果是__[(1,2),(2,4),(3,6),(4,8),(5,10),(6,12)]

3.已知rdd=sc.parallelize([21,17,19,4,15,6,22]),则rrd.take(4)和rrd.top(5)的运行结果分别为[21,17,19,4] [22,21,19,17,15]

4.根据代码填空:

file =sc.parallelize(["1","2","","3","","4","","","5"])

blanks =sc.accumulator(0)

def countblanks(line):

global blanks

if(len(line) ==0):

blanks +=1

return line

file.map(countblanks).collect()

print(blanks.value)

上述代码的目的是__统计一个RDD中有多少元素为空__;使用的共享变量是__accumulator______,该共享变量的变量名是__blanks____;代码 len(line)的含义是__line的长度_____;最后一句代码print(blanks.value)的输出结果是_4_____。

5.RDD算子包括transform算子和action算子(执行算子)两种类型。

6. 根据代码填空:

a =sc.textFile(“/root/index.txt”)

b =a.collect()

c =sc.broadcast(b)

d =sc.parallelize([0,0,0,0]).flatMap(lambda x: c.value)

d.collect()

c.unpersist()

上述代码使用的共享变量是__broadcast_____;该共享变量的变量名为_c__;查看该共享变量的值的方法是_c.value__;假设 a.collect()的结果是[3,2,1,0],则代码 d.collect()的输出结果是_[3,2,1,0,3,2,1,0,3,2,1,0,3,2,1,0]___;代码 c.unpersist()的作用是__解除广播变量的持久化操作_______。

  • 简答题
  1. 如何理解 Spark RDD 中的血统概念。

RDD只支持粗粒度转换,即在大量记录上执行单个操作。RDD的血统(Lineage)会记录 RDD的元数据信息和转换行为,当该RDD自内部分分区数据丢失时,它可以根据这些信息重新运算并恢复丢失的分区数据。

  1. 请写出 Spark RDD 的四种创建方式。

1).从集合中创建RDD,Spark主要提供了两个方法:parallelize和makeRDD

2).从外部存储文件创建RDD
3).从其它RDD创建
4).直接创建RDD(new) 
5).基于Nosql创建rdd,如hbase
6).基于s3创建rdd,
7).基于数据流,如socket创建rdd

  1. 简述 Spark Streaming 获取数据的方式,并写出其使用的方法。
  1. socket获取,socketTextStream()
  2. HDFS获取,textFileStream()
  3. Kafka获取,pyspark.streaming.kafka.KafkaUtils
  4. Flume获取,pyspark.streaming.flume.flumeUtils
  1. 简述 Spark 中广播变量基本原理和用途。
  1. 请简述Spark SQL与DataFrame的区别与联系?

区别:RDD是分布式的java对象的集合,但是对象内部结构对于RDD而言却是不可知的。DataFrame是一种以RDD为基础的分布式数据集,提供了详细的结构信息,相当于关系数据库中的一张表

联系1.都是spark平台下的分布式弹性数据集,为处理超大型数据提供便利2、都有惰性机制,在进行创建、转换,如map方法时,不会立即执行,只有在遇到Action才会运算3.都会根据spark的内存情况自动缓存运算,这样即使数据量很大,也不用担心会内存溢出4、三者都有partition的概念5.三者有许多共同的函数,如filter,排序等

6.请简述SparkStreaming的工作原理?

SparkStreaming从数据流接受实时数据流,并将数据分为若干批,然后由spark引擎进行处理,最后批量生成结果流。

7.spark运行模式有哪些,并简要说明每种运行模式?

local模式:spark单机运行,一般用于开发测试。

standalone模式:构建一个由Master+Slave构成的Spark集群,Spark运行在集群中。

spark on Yarn模式:Spark客户端直接连接Yarn,不需要额外构建Spark集群。

spark on Mesos模式:Spark客户端直接连接Mesos,不需要额外构建Spark集群。

8.请列举7个 Spark RDD 的action算子,并简述功能。

答:

reduce(f):通过指定的聚合方法对 RDD 中的元素进行聚合操作。

collect():返回一个包含 RDD 所有元素的列表。

count():统计 RDD 中元素的个数。

take(n):获取 RDD 中前 n 个元素的值,返回的结果为列表类型。

first():返回 RDD 中的第一个元素,返回的数据类型为元素类型。

top(n):返回 RDD 中最大的前 n 个元素,返回的结果为列表类型。

saveAsTextFile():将 RDD 中的元素以字符串的格式存储于文件系统中。

foreach(f):遍历 RDD 中的每个元素,同时通过传递自定义的处理函数 f,对 RDD 中的每个元素进行处理。

foreachPartition(f):遍历 RDD 的 每个分区,同时通过传递的 f 对每个分区进行操作。

9.列举7个Spark RDD 的transformation 算子,并简述功能。

答:

map:对RDD中的数据逐条进行映射,可以是类型转换,也可是值转换。

flatMap:先对RDD中的所有元素进行map操作,然后将结果平坦化。

filter:按照指定条件对RDD中的元素进行过滤。

union:将两个RDD求并集,并返回一个新的RDD。

intersection:将两个RDD求交集,并返回一个新的RDD,其输出不包含任何重复元素。

sortBy:通过指定key对RDD中的元素进行排序。

mapPartitions:对RDD的每个分区进行map运算。

四、编程题

1. 微博数据分析。

假设有一个数据文件,存储路径为“/home/ubuntu/data/blogInfo.txt”,它包含如下格式的两列数据(其中第一列和第二列都表示用户 ID,每行数据的含义是第一列的用户关注了第二列的用户。数据使用“\t”分隔符隔开):

数据示例:

11111111 12743457

11111111 16386587

11111112 12356363

现使用 pyspark 交互式界面,请使用 Spark RDD 的相关知识编写代码回答下列问题:

(1)将数据读成 RDD 格式。

(2)统计一共有多少个不同的用户 ID。

(3)统计出每个用户的粉丝数量。

(4)将步骤(3)的结果写入到 HDFS 文件中(具体路径为:hdfs://linux01:9000/out/result.txt)。

(1)Lines = sc.textFile(“/home/ubuntu/data/blogInfo.txt”)  
(2)Data = lines.flatMap(lambda x:x.split(“\t”)) 
Result = data.distinct().count() 
(3)Data3 = lines.map(lambda x: x.split(\t)[1]) 
Result3 = data3.map(lambda x: (x,1)).reduceByKey(lambda x,y: x+y).collect() 
(4)Result3.saveAsTextFile(hdfs://linux01:9000/out/result.txt)

2. 网页流量日志分析。

假设有一个数据文件,存储路径为“/home/ubuntu/data/log.txt”,它包含如下格式的三列数据(其中第一列表示访问时间,第二列表示网页名称,第三列表示访问次数。数据使用“\t”分隔符隔开):

数据示例:

time name num

20200501 baidu 2

20200501 sina 3

20200502 qq 3

20200502 baidu 5

现使用 pyspark 交互式界面,请使用 Spark SQL 的相关知识编写代码回答下列问题:

(1)将数据读成 DataFrame 类型,列名分别为“time”、“name”和“num”。

(2)将数据注册为 SQL 表,表名为“log”。

(3)统计同一天里同一网页的总访问量。

(4)统计每个网页的总访问量,并按照总访问量降序排序。

(1)data = spark.read.load(“/home/ubuntu/data/log.txt”, format =”csv”, sep=”\t”, header=True) 
(2)data.registerTempTable(“log”) 
(3)spark.sql(“select time,name,sum(num) from log groupby time,name”).show() 
(4)sql = “select name,sum(num) fangwenliang from log groupby name order by fangwenliang desc” 
spark.sql(sql).show()

3. 员工数据分析。

假设有员工数据,存储路径为

“/home/ubuntu/data/employee.json”,其数据格式如下:

{“id”: 1,“name”: “Ella”, “age”: 36}

{“id”: 2,“name”: “Bob”, “age”: 29}

{“id”: 3, “name”: “Jim”, “age”: 28}

假设编程环境为 pyspark 交互式界面,请使用 Spark DataFrame 的相关知识编写代码回答下列问题:

(1)将数据加载为 DataFrame 格式。

(2)查询所有数据,并删除重复的数据。

(3)将数据按照 name 升序排列。

(4)将数据保存为 parquent 格式,仍旧保存在/home/ubuntu/data/目录下。

答: 
(1) employee = spark.read.json(“/home/ubuntu/data/employee.json”) 
(2) employee.select(“id”,”name”,”age”).distinct().show() 
(3) employee.select(“id”,”name”,”age”).orderBy(“name”).show() 
(4) employee.write.save(“/home/ubuntu/data/employee.paquent”)

4. Spark Streaming 计算。

现通过本地的 9999 端口发送日志流数据,数据格式如下(数据中有三个字段,含义分别为:访问网址,访问流量,访问时间戳。各字段使用“,”隔开):

数据示例:

www.baidu.com,12853,2586213654

假设编程环境为 pyspark 交互式界面,请使用 Spark Streaming 的相关知识编写代码回答下列问题:

(1)创建一个 DStream,监听该端口的数据,时间间隔为 5 秒。(提示:注意导入 streaming 包和上下文的创建)

(2)使用有状态转换 updateStateByKey 统计每个网站的总访问流量。

转发标明出处

Spark期末考试练习题相关推荐

  1. 大二c语言期末考试题库及详解答案,大学C语言期末考试练习题(带详解答案)...

    <大学C语言期末考试练习题(带详解答案)>由会员分享,可在线阅读,更多相关<大学C语言期末考试练习题(带详解答案)(55页珍藏版)>请在金锄头文库上搜索. 1.一. 单项选择题 ...

  2. 三年级计算机上册期末测试题,小学三年级英语上册期末考试练习题

    小学三年级英语上册期末考试练习题 听力部分(20分) 一.听录音,选出你所听到的内容(听两遍).(10分) ( ) 1 A. J B. G C. B ( ) 2 A. u B. v C. w ( ) ...

  3. 大学期末c语言作业演示,大学C语言期末考试练习题(带详解答案)

    资源描述: 一. 单项选择题1. ( A )是构成 C 语言程序的基本单位.A.函数 B.过程 C.子程序 D.子例程2.C 语言程序从 C 开始执行.A 程序中第一条可执行语句 B 程序中第一个函数 ...

  4. linux哪个指令可以设定使用者的密码,linux期末考试练习题 2

    一.单项选择题 1.下面不是对Linux操作系统特点描述的是() A.良好的可移植性 B.单用户 C.多用户 D.设备独立性 2.查看创建目录命令mkdir的帮助文档可以使用() A.mkdir -h ...

  5. linux系统进程类型不包括,linux期末考试练习题

    一.单项选择题 1.下面不是对Linux操作系统特点描述的是(B) A.良好的可移植性 B.单用户 C.多用户 D.设备独立性 2.查看创建目录命令mkdir的帮助文档可以使用(B) A.mkdir ...

  6. c语言定义不定长数组初始化_大学C语言期末考试练习题(带详解答案)(1)

    链接:https://pan.baidu.com/s/1d2Bb1vNTyBNpFGneIAicVw 提取码:y7uw 单项选择题 C语言的基本单位是 函数 1.(A  )是构成C语言程序的基本单位. ...

  7. 计算机绘图cad期末考试试题,2017大学cad期末考试练习题「附答案」

    [www.hywsbj.com--三会一课] 一.选择题 1.如果创建一个选择集,使选框所圈住及 所接触的图形选中,应采用 A.使用一个窗口选择 B.交叉 选择 C.在命令行输入CA D.按 shif ...

  8. 华师的入学计算机测试题,华师期末考试计算机练习题

    华师期末考试计算机练习题 (26页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 19.9 积分 .第1题在Word中,按Delete键,可删除_____ ...

  9. 《spark技术应用》课程期末考试大作业报告,使用eclipse完成求top值、文件排序、二次排序三个程序的个性化开发。

    ​​​​目录 一.选题的目的及要求... 4 二.设计思路... 4 三.主要内容及关键技术.. 5 四.制作步骤... 5 1.准备工作... 5 1.1在VMware中安装一台Ubuntu64位系 ...

最新文章

  1. usaco frame up(所有拓扑排序的输出)
  2. TaskWarrior windows版制作
  3. 倒计时3天|阿里云数据库创新上云峰会亮点剧透
  4. java集合详解_Map、Set、List及其子类和接口你都明白吗?看这篇Java集合超详解
  5. 解读ASP.NET 5 MVC6系列(9):日志框架
  6. 【csust】寻宝(贪心,思维)
  7. 玩转 Rockchip 的开发板,这些信息你要知道
  8. 在android添加数据采集,一种基于Android系统的地理信息数据采集方法与流程
  9. c++ jna 数据类型_JNA实战笔记汇总一 简单认识JNA|成功调用JNA
  10. Kafka配置4--Windows下配置Kafka的SSL证书
  11. kali linux 清华源_Kali Linux 更新源
  12. 花了1晚上diy的matlab解数独算法,很好理解!
  13. 二维码和app扫码下载
  14. android开机动画切换
  15. 几个常见网络故障修复命令
  16. iptv增值业务--华为机顶盒视频播放代码
  17. 如何解决电脑使用中任务栏“卡死”问题。
  18. 易语言查找过滤相同重复文本源码
  19. STM32+MLX90614红外测温
  20. 移动硬盘插到电脑上忽然不显示的解决办法(不一定有用,仅我个人的解决方法)

热门文章

  1. 正确涂CPU硅脂的方法要这样
  2. kettle基本概念
  3. git基础(7)--打标签
  4. 春不语,春天却能催醒百花。
  5. 51博客,51,博客,文章,新闻,主页,51主页,帅举,shuaiju,boke,51boke,51zhuye,zhuye
  6. 织梦 DEDECMS LOOP标签的用法及调用
  7. 生化危机 (20 分)
  8. 如何在adobe dreamweaver cs6中添加动态下拉列表
  9. SpringBoot的启动类显示的是个方框而不是叶子形状
  10. 网页中滚动字幕的制作