spark知识点总结
RDD(弹性分布式数据集)是Spark的基本抽象,代表不可变的、分区的元素集合。9.在Spark中,哪个操作可以将两个RDD基于键进行合并,并返回一个新的RDD,其中包含匹配的键及其对应的值对?39.Spark的`DataFrame`可以看作是`RDD[Row]`的封装,提供列名和类型信息吗?13. 在Spark中,`reduceByKey`和`groupByKey`的主要区别是什么?25.在Sp
1. Spark的抽象数据结构,用于表示分布式数据集是什么?
DRR(Resilient Distributed Dataset)
2. 在Spark中,用于将多个RDD合并为一个RDD是什么操作?
union
3. Spark中的`map`操作返回值是什么?
一个新的RDD
4. Spark SQL有哪些组件用于执行SQL查询?
catalys优化器,tungsten执行引擎
5. 在Spark中,如何创建一个包含1到100的整数RDD?
sparkContext.parallelize(1 to 100)
6. Spark中,哪个操作可以将一个RDD中的每个元素映射到一个新的RDD,且允许改变元素类型?
map
7. 在Spark中,用于缓存RDD或DataFrame的命令是什么?
cache()或persist()
8. Spark的部署模式有哪些?
本地模式,standalone模式,YAEN模式,Mesos模式
9. 在Spark中,哪个操作可以将两个RDD基于键进行合并,并返回一个新的RDD,其中包含匹配的键及其对应的值对?
join
10. Spark Streaming是基于哪个核心概念构建的?
微批处理(Micro-batch)
11. Spark中,哪个操作会触发作业(Job)的执行?
collect()(其他操作会触发包括count(),saveAsTextFile())
12. Spark SQL的结构化数据抽象是什么?
DataFrame/Dataset
13. 在Spark中,`reduceByKey`和`groupByKey`的主要区别是什么?
reduceByKey会在shuffle前先在本地合并数据,而groupByKey会直接shuffle所有数据
14. Spark Streaming的DStream是什么?
离散化流(Discretized Stream),是Spark Streaming的基本抽象
15. Spark的内存管理组件是什么?
Unified Memory Manager (统一内存管理器)
16. 在Spark中,如何将一个DataFrame保存为Parquet格式?
df.write.parquet("path/to/output")
17. Spark的宽依赖操作是什么?
需要shuffle的操作,如join, groupByKey等
18. Spark的`accumulator`变量主要用于什么?
用于跨task的累加统计
19. 在Spark中,`coalesce`和`repartition`的主要区别是什么?
coalesce只能减少分区且不shuffle,repartition可以增减分区但会触发shuffle
20.Spark的RDD操作分为哪两种类型?
Transformation和Action
21. Spark RDD是不是可变的?
否 (RDD是不可变的)
22. 在Spark中,`reduceByKey`操作是否只能用于键值对RDD。
是
23. Spark DataFrame是强类型的集合,而RDD是什么类型的集合?
否 (DataFrame是弱类型的,Dataset是强类型的)
24. Spark支持多种语言API,举例有哪些?
Scala、Java、Python、R
25. 在Spark中,`cache()`和`persist()`操作的效果是否完全相同的?
否 (cache()是persist()的默认存储级别)
26. Spark SQL可以处理结构化和半结构化数据吗?
是
27.Spark Streaming是否允许对实时数据流进行低延迟处理?
是
28. Spark Streaming是否允许对实时数据流进行低延迟处理?
只读变量
29. Spark的`broadcast`变量一般用于哪些对象?
否 (可以自定义累加器)
30. 在Spark中,`accumulator`变量只能用于加法操作吗?
否
31. Spark的RDD属于强类型的集合吗?
是(在Scala/Java API中RDD是强类型的,Python RDD是弱类型的)
32. cache()`操作是不是会立即执行RDD的计算?
否(只有遇到action操作才会触发计算)
33. Spark Streaming可以处理完全实时的数据流吗?
否(基于微批处理,有秒级延迟)
34. 在Spark中,`broadcast`变量能否跨任务更新?
否(广播变量是只读的)
35. Spark SQL的`Dataset`是强类型的集合吗?
是(DataFrame是Dataset[Row]的别名,弱类型)
36. Spark的`reduceByKey`操作是否会引发shuffle?
是(但比groupByKey更高效)
37.Spark的accumulator变量是否可以在Executor中读取?
否(只能在Driver端读取)
38. Spark的`accumulator`变量是否可以在Executor中读取?
是
39. Spark的`DataFrame`可以看作是`RDD[Row]`的封装,提供列名和类型信息吗?
是(当某些key的数据量远大于其他key时)
40. Spark的`groupByKey`操作会不会导致数据倾斜?
是
41. 简述Spark中的RDD是什么,并列举其两个主要特性。
RDD(弹性分布式数据集)是Spark的基本抽象,代表不可变的、分区的元素集合。主要特性:1) 分区性(partitioned) 2) 容错性(fault-tolerant) 3) 可并行计算(parallel)
42. 解释Spark中的`transformations`和`actions`的区别。
transformations是惰性操作,定义RDD之间的依赖关系但不立即执行;actions是触发实际计算并返回结果到驱动程序的操作。
43. 简述Spark SQL的优点。
1) 统一的API访问多种数据源 2) 优化查询执行 3) 与Spark生态无缝集成 4) 支持SQL和DataFrame API 5) 更好的性能
44. 什么是Spark的累加器(Accumulator)?
累加器是一种分布式变量,只能通过关联和交换操作进行"添加",用于高效地聚合各工作节点的值到驱动程序。
45. 简述Spark的宽依赖和窄依赖,并举例说明。
窄依赖:每个父RDD分区最多被子RDD的一个分区使用(如map、filter);宽依赖:子RDD分区依赖多个父RDD分区(如groupByKey、reduceByKey)
46. 解释Spark中的`lineage`(血缘关系)及其作用。
lineage是RDD的转换操作序列,用于在故障时重建丢失的分区数据,是Spark容错机制的基础。
48. 什么是Spark的`shuffle`操作?列举两个常见的`shuffle`操作。
shuffle是跨节点重新分配数据的过程。常见操作:reduceByKey、join、groupByKey
49. 简述Spark SQL的`Catalyst`优化器的作用。
Catalyst是Spark SQL的查询优化器,负责逻辑计划优化(如谓词下推、列剪枝)和物理计划生成。
50. 什么是Spark的`checkpoint`操作?其与`cache`的区别是什么?
checkpoint将RDD持久化到可靠存储(如HDFS),切断血缘关系;cache只将RDD存储在内存/磁盘,保留血缘关系。
更多推荐
所有评论(0)