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

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

1.spark中cache后面能不能接其他算子,它是不是action操作?

答:cache可以接其他算子,但是接了算子之后,起不到缓存应有的效果,因为会重新触发cache。

2.reduceByKey是不是action?

答:不是,很多人都会以为是action,reduce rdd是action

3.Spark提交你的jar包时所用的命令是什么?

答:spark-submit。

4.Spark有哪些聚合类的算子,我们应该尽量避免什么类型的算子?

答:在我们的开发过程中,能避免则尽可能避免使用reduceByKey、join、distinct、repartition等会进行shuffle的算子,尽量使用map类的非shuffle算子。这样的话,没有shuffle操作或者仅有较少shuffle操作的Spark作业,可以大大减少性能开销。

5.对于Spark中的数据倾斜问题你有什么好的方案?

1)前提是定位数据倾斜,是OOM了,还是任务执行缓慢,看日志,看WebUI

2)解决方法,有多个方面

(1)避免不必要的shuffle,如使用广播小表的方式,将reduce-side-join提升为map-side-join

(2)分拆发生数据倾斜的记录,分成几个部分进行,然后合并join后的结果

(3)改变并行度,可能并行度太少了,导致个别task数据压力大

(4)两阶段聚合,先局部聚合,再全局聚合

(5)自定义paritioner,分散key的分布,使其更加均匀

详细解决方案参考我们的教案或者博文《Spark数据倾斜优化方法》

6.RDD创建有哪几种方式?

1)使用程序中的集合创建rdd

2)使用本地文件系统创建rdd

3)使用hdfs创建rdd,

4)基于数据库db创建rdd

5)基于Nosql创建rdd,如hbase

6)基于数据流,如socket创建rdd

如果只回答了前面三种,是不够的,只能说明你的水平还是入门级的,实践过程中有很多种创建方式。

7.Spark并行度怎么设置比较合适

spark并行度,每个core承载2~4个partition,如,32个core,那么64~128之间的并行度,也就是设置64~128个partion,并行读和数据规模无关,只和内存使用量和cpu使用时间有关。

8.Spark中数据的位置是被谁管理的?

每个数据分片都对应具体物理位置,数据的位置是被blockManager,无论数据是在磁盘,内存还是tacyan,都是由blockManager管理。

9.Spark的数据本地性有哪几种?

答:Spark中的数据本地性有三种:

1)PROCESS_LOCAL是指读取缓存在本地节点的数据

2)NODE_LOCAL是指读取本地节点硬盘数据

3)ANY是指读取非本地节点数据

通常读取数据PROCESS_LOCAL>NODE_LOCAL>ANY,尽量使数据以PROCESS_LOCAL或NODE_LOCAL方式读取。其中PROCESS_LOCAL还和cache有关,如果RDD经常用的话将该RDD cache到内存中,注意,由于cache是lazy的,所以必须通过一个action的触发,才能真正的将该RDD cache到内存中。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值