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