共计 1449 个字符,预计需要花费 4 分钟才能阅读完成。
锁屏面试题百日百刷,每个工作日保持更新面试题。锁屏面试题 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 到内存中。