锁屏面试题百日百刷,每个工作日坚持更新面试题。锁屏面试题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到内存中。
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net