锁屏面试题百日百刷,每个工作日保持更新面试题。锁屏面试题app、小程序现已上线,官网地址:https://www.demosoftware.cn。已收录了每日更新的面试题的所有内容,还蕴含特色的解锁屏幕温习面试题、每日编程题目邮件推送等性能。让你在面试中后人一步!接下来的是今日的面试题:
1.rdd有几种操作类型?
1)transformation,rdd由一种转为另一种rdd
2)action
3)cronroller,crontroller是管制算子,cache,persist,对性能和效率的有很好的反对
三种类型,不要答复只有2种操作
2.collect性能是什么,其底层是怎么实现的?
答:driver通过collect把集群中各个节点的内容收集过去汇总成后果,collect返回后果是Array类型的,collect把各个节点上的数据抓过去,抓过去数据是Array型,collect对Array抓过去的后果进行合并,合并后Array中只有一个元素,是tuple类型(KV类型的)的。
3.Spark程序执行,有时候默认为什么会产生很多task,怎么批改默认task执行个数?
1)因为输出数据有很多task,尤其是有很多小文件的时候,有多少个输出
block就会有多少个task启动;
2)spark中有partition的概念,每个partition都会对应一个task,task越多,在解决大规模数据的时候,就会越有效率。不过task并不是越多越好,如果平时测试,或者数据量没有那么大,则没有必要task数量太多。
3)参数能够通过spark_home/conf/spark-default.conf配置文件设置:
spark.sql.shuffle.partitions 50
spark.default.parallelism 10
第一个是针对spark sql的task数量
第二个是非spark sql程序设置失效
4.为什么Spark Application在没有取得足够的资源,job就开始执行了,可能会导致什么问题产生?
答:会导致执行该job时候集群资源有余,导致执行job完结也没有调配足够的资源,调配了局部Executor,该job就开始执行task,应该是task的调度线程和Executor资源申请是异步的;如果想期待申请完所有的资源再执行job的须要将spark.scheduler.maxRegisteredResourcesWaitingTime设置的很大;
spark.scheduler.minRegisteredResourcesRatio 设置为1,然而应该结合实际思考否则很容易呈现长时间调配不到资源,job始终不能运行的状况。
5.Spark为什么要长久化,个别什么场景下要进行persist操作?为什么要进行长久化?
spark所有简单一点的算法都会有persist身影,spark默认数据放在内存,spark很多内容都是放在内存的,非常适合高速迭代,1000个步骤
只有第一个输出数据,两头不产生长期数据,但分布式系统危险很高,所以容易出错,就要容错,rdd出错或者分片能够依据血统算进去,如果没有对父rdd进行persist 或者cache的化,就须要重头做。以下场景会应用persist
1)某个步骤计算十分耗时,须要进行persist长久化
2)计算链条十分长,从新复原要算很多步骤,很好使,persist
3)checkpoint所在的rdd要长久化persist,
lazy级别,框架发现有checnkpoint,checkpoint时独自触发一个job,须要重算一遍,checkpoint前,要长久化,写个rdd.cache或者rdd.persist,将后果保存起来,再写checkpoint操作,这样执行起来会十分快,不须要从新计算rdd链条了。checkpoint之前肯定会进行persist。
4)shuffle之后为什么要persist,shuffle要进性网络传输,危险很大,数据失落重来,复原代价很大
5)shuffle之前进行persist,框架默认将数据长久化到磁盘,这个是框架主动做的。