大数据面试之Spark Core常见题目
1 Spark任务的划分
1、Application:初始化一个SparkContext即生成一个Application。
2、Job:一个Action算子会生成一个Job,有多个Action算子就有多个Job。
3、Stage:Stage等于宽依赖的个数加1,或者说是Shuffle的个数加1。
4、Task:一个Stage阶段中,最后一个RDD的分区个数就是Task的个数。
2 Cache缓存和Checkpoint检查点
1、Cache缓存只是将数据保存起来,不会改变血缘依赖关系。Checkpoint检查点会改变血缘依赖关系。
2、Cache缓存的数据通常存储在磁盘、内存等地方,可靠性低。Checkpoint的数据通常存储在HDFS、HBase、Redis、MySQL等第三方的文件系统,可靠性高。
3 Spark中的宽窄依赖
宽依赖:有Shuffle的是宽依赖。一般通过有聚合操作来判定Shuffle。
窄依赖:没有Shuffle,不需要聚合在一起。
4 Spark中Kryo序列化
Kryo序列化比Java序列化更快更紧凑,可以提高效率。但Spark默认的序列化是Java序列化并不是Spark序列化,因为Spark并不支持所有序列化类型,所以每次使用都必须进行注册。注册只针对于RDD。在DataFrames和DataSet当中自动实现了Kryo序列化。
5 RDD五大属性
文字描述:
1、一组分区。标记数据是哪个分区的。
2、一个计算每个分区的函数。对数据进行计算。
4、分区器。数据计算完了往分区器里面发送,控制分区的数据流向。
3、RDD之间的依赖关系。数据发送到分区器之后形成了对应的依赖关系。
5、一个列表,存储读取每个Partition的优先位置。移动数据不如移动计算。
6 Spark的transformation算子
1、单Value
(1)map
(2)mapPartitions
(3)mapPartitionsWithIndex
(4)flatMap
(5)groupBy
(6)filter
(7)sample
(8)distinct
(9)sortBy
(10)coalesce
coalesce底层参数设置true,要执行shuffle,若是false,就没有shuffle。一般用没有shuffle的来缩减分区。
(11)repartition
在coalesce外面封装了一层,给参数置为了true,重新分区。coalesce(numPartitions, shuffle = true)
一般情况下,增加rdd的partition数量使用repartition,减少partition数量时使用coalesce
2、双vlaue
交集、并集、差集、拉链
(1)intersection
(2)union
(3)subtract
(4)zip
3、Key-Value
(1)partitionBy
(2)reduceByKey
有预聚合操作,企业中用的稍微多些,但是也要注意应用场景。
(3)groupByKey
没有预聚合操作
上面是(2)和(3)进行比较。
(4)aggregateByKey
(5)foldByKey
(6)combineByKey
这个是(2)(4)(5)(6)进行比较。reduceByKey没有初始值,分区内和分区间逻辑相同。foldByKey有初始值,分区内和分区间逻辑相同。aggregateByKey有初始值,分区内和分区间逻辑可以不相同。combineByKey有初始值,并且可以变换结构,分区内和分区间逻辑可以不相同。
7 Spark的action算子
(1)reduce
(2)first
(3)take
(4)foreach
(5)foreachPartition
8 Spark广播变量
广播变量的文字描述:
如果我们要在分布式计算里面分发大对象,例如:字典,集合,黑白名单等,这个都会由Driver端进行分发,一般来讲,如果这个变量不是广播变量,那么每个task就会分发一份,这在task数目十分多的情况下Driver的带宽会成为系统的瓶颈,而且会大量消耗task服务器上的资源,如果将这个变量声明为广播变量,那么只是每个executor拥有一份,这个executor启动的task会共享这个变量,节省了通信的成本和服务器的资源。
9 Spark累加器
累加器文字描述:
在Spark应用程序中,我们经常会有这样的需求,如异常监控,调试,记录符合某特性的数据的数目,这种需求都需要用到计数器,如果一个变量不被声明为一个累加器,那么它将在被改变时不会在driver端进行全局汇总,即在分布式运行时每个task运行的只是原始变量的一个副本,并不能改变原始变量的值,但是当这个变量被声明为累加器后,该变量就会有分布式计数的功能。
声明:
文章中代码及相关语句为自己根据相应理解编写,文章中出现的相关图片为自己实践中的截图和相关技术对应的图片,若有相关异议,请联系删除。感谢。转载请注明出处,感谢。
By luoyepiaoxue2014
B站: https://space.bilibili.com/1523287361 点击打开链接
微博: http://weibo.com/luoyepiaoxue2014 点击打开链接