欢迎光临散文网 会员登陆 & 注册

锁屏面试题百日百刷-Spark篇(三)

2023-03-12 19:13 作者:zjlala96  | 我要投稿

 锁屏面试题百日百刷,每个工作日坚持更新面试题。锁屏面试题app、小程序现已上线,官网地址:https://www.demosoftware.cn。已收录了每日更新的面试题的所有内容,还包含特色的解锁屏幕复习面试题、每日编程题目邮件推送等功能。让你在面试中先人一步!接下来的是今日的面试题:


1.分别简述Spark中的缓存机制并指出两者的区别与联系

都是做RDD持久化的

cache:内存,不会截断血缘关系,使用计算过程中的数据缓存。

checkpoint:磁盘,截断血缘关系,在ck之前必须没有任何任务提交才会生效,ck过程会额外提交一次任务。

2.如何理解Spark中的血统概念(RDD)?

RDD在Lineage依赖方面分为两种Narrow Dependencies与Wide Dependencies用来解决数据容错时的高效性以及划分任务时候起到重要作用。

3.简述Spark的宽窄依赖,以及Spark如何划分stage,每个stage又根据什么决定task个数?

Stage:根据RDD之间的依赖关系的不同将Job划分成不同的Stage,遇到一个宽依赖则划分一个Stage。

Task:Stage是一个TaskSet,将Stage根据分区数划分成一个个的Task。

4.请列举Spark的action算子(不少于6个),并简述功能(重点)

1)reduce:

2)collect:

3)first:

4)take:

5)aggregate:

6)countByKey

7)foreach:

8)saveAsTextFile:

5.请列举会引起Shuffle过程的Spark算子,并简述功能。

reduceBykey:

groupByKey:

…ByKey:

6.请列举Spark的groupByKey算子底层实现

GroupByKey算子底层实现是基于combineByKey结合ShuffleRDD构建。

combineByKey(createCombiner: V=>C, mergeValue: (C, V) =>C, mergeCombiners: (C, C) =>C):对相同K,把V合并成一个集合。

1.createCombiner: combineByKey() 会遍历分区中的所有元素,因此每个元素的键要么还没有遇到过,要么就和之前的某个元素的键相同。如果这是一个新的元素,combineByKey()会使用一个叫作createCombiner()的函数来创建那个键对应的累加器的初始值

2.mergeValue: 如果这是一个在处理当前分区之前已经遇到的键,它会使用mergeValue()方法将该键的累加器对应的当前值与这个新的值进行合并

3.mergeCombiners: 由于每个分区都是独立处理的, 因此对于同一个键可以有多个累加器。如果有两个或者更多的分区都有对应同一个键的累加器, 就需要使用用户提供的 mergeCombiners() 方法将各个分区的结果进行合并。

锁屏面试题百日百刷-Spark篇(三)的评论 (共 条)

分享到微博请遵守国家法律