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

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

2023-03-17 21:58 作者:zjlala96  | 我要投稿

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


1.Spark中广播变量使用需要注意什么?

1、广播变量在Driver端定义

2、广播变量在Execoutor只能读取不能修改

3、广播变量的值只能在Driver端修改

4、不能将RDD广播出去,RDD不存数据,可以将RDD的结果广播出去,rdd.collect()

5、广播变量使用BlockManager管理,广播变量一般存储在内存中(Executoion区域)

2.简述SparkSQL中RDD、DataFrame、DataSet三者区别与联系?

1)RDD

优点:

编译时类型安全

编译时就能检查出类型错误

面向对象的编程风格

直接通过类名点的方式来操作数据

缺点:

序列化和反序列化的性能开销

无论是集群间的通信, 还是IO操作都需要对对象的结构和数据进行序列化和反序列化。

GC的性能开销 ,频繁的创建和销毁对象, 势必会增加GC

2)DataFrame

DataFrame引入了schema和off-heap

schema : RDD每一行的数据, 结构都是一样的,这个结构就存储在schema中。 Spark通过schema就能够读懂数据, 因此在通信和IO时就只需要序列化和反序列化数据, 而结构的部分就可以省略了。

3)DataSet

DataSet结合了RDD和DataFrame的优点,并带来的一个新的概念Encoder。

当序列化数据时,Encoder产生字节码与off-heap进行交互,能够达到按需访问数据的效果,而不用反序列化整个

对象。Spark还没有提供自定义Encoder的API,但是未来会加入。

三者之间的转换:

3.SparkSQL中join操作与left join操作的区别?

join和sql中的inner join操作很相似,返回结果是前面一个集合和后面一个集合中匹配成功的,过滤掉关联不上的。

leftJoin类似于SQL中的左外关联left outer join,返回结果以第一个RDD为主,关联不上的记录为空。

部分场景下可以使用left semi join替代left join:

因为 left semi join 是 in(keySet) 的关系,遇到右表重复记录,左表会跳过,性能更高,而 left join 则会一直遍历。但是left semi join 中最后 select 的结果中只许出现左表中的列名,因为右表只有 join key 参与关联计算了

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

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