锁屏面试题百日百刷,每个工作日保持更新面试题。锁屏面试题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到内存中。