首页 > 编程知识 正文

产品经理常见面试题,spark期末考试题

时间:2023-05-03 09:27:26 阅读:16184 作者:1413

1、什么是宽依赖,什么是窄依赖?哪些算子是宽依赖,哪些是窄依赖?

狭窄的依赖关系是指与子RDD分区(如map和filter )相对应的父RDD分区

或者,多个父RDD分区(如co-partioned join )对应于一个子RDD分区

宽依赖关系是与子RDD分区(而不是所有分区,如groupByKey和ruduceByKey )相对应的父RDD分区

或者,一个父RDD分区对应于所有子RDD分区。 例如,没有共同分割的join等

3359 www.Jian Shu.com/p/736 a4e 628 f 0f

2、Transformation和action算子有什么区别?举例说明

传输/转换:此转换不会触发作业提交,并完成作业的中间流程处理。 变换操作是延迟计算。 也就是说,从一个RDD转换生成另一个RDD的转换操作不会立即执行,必须在有操作之前实际开始运算

映射,过滤器

操作操作符:此类操作符由SparkContext触发作业提交。

操作符触发Spark提交作业(Job )。

计数

3、讲解spark shuffle原理和特性?shuffle write 和 shuffle read过程做些什么?

3359 blog.csdn.net/zhanglh 046/article/details/78360762

4、Shuffle数据块有多少种不同的存储方式?分别是什么

RDD数据块:用于存储缓存的RDD数据。 Shuffle数据块:用于存储持久化的Shuffle数据。 广播变量数据块:用于保存已保存的广播变量数据。 返回任务结果数据块返回存储管理模块中存储的任务的结果。 通常,任务结果会与任务一起通过Akka返回驱动程序端。 但是,如果任务返回结果较大,则会发生Akka帧溢出。 在这种情况下,另一种方案是将返回结果作为块放入存储管理模块中,在驱动器端获取该数据块即可。 由于存储管理模块内部的数据块传输通过套接字连接,因此不会发生Akka帧溢出。 流数据块:仅用于Spark Streaming,接收到的流数据块5、哪些spark算子会有shuffle?

重分区,如去重、distinct排序、groupByKey、reduceByKey、repartition、coalesce集合或表操作、interection、join https://k uncle.gggey

6、讲解spark schedule(任务调度)?

3359 www.cn blogs.com/miss mzt/p/6734078.html

7、Spark stage是如何划分的?

从hdfs读取文件后,创建RDD对象DAGScheduler模块介入运算,计算RDD之间的依赖关系。 RDD之间的依存关系形成了DAG的各JOB被分成多个Stage。 划分Stage的主要依据之一是当前计算因子的输入是否确定,如果是,则划分为同一个Stage,避免多个Stage之间的消息传递开销。 因此,spark划分stage的总体思路是:从后往前推,遇到广泛依赖就断开,分成一个stage; 遇到狭窄的依赖项时,将此RDD添加到此stage中。

8、Spark cache一定能提升计算性能么?说明原因?

不,不是那样的。 cache将数据缓存在内存中。 小数据量时可以提高效率,但数据大时内存放不下会报告溢出。

9、Cache和persist有什么区别和联系?

cache调用了持续方法。 cache只有一个默认的缓存级别MEMORY_ONLY,persist可以根据需要设置其他缓存级别。

33559 blog.csdn.net/Hou mou/article/details/52491419

10、RDD是弹性数据集,“弹性”体现在哪里呢?你觉得RDD有哪些缺陷?

自动化内存和磁盘切换的基于lineage的高效容错任务失败时将进行特定次数的重试,失败时将自动进行特定次数的重试。 然后,只计算失败的片。checkpoint【RDD操作将生成新的rdd。 链条越长,计算就越重。 将数据放入硬盘”和persist【将数据复用到内存或磁盘】(检查点、持久化)数据调度灵活性) DAG TASK和与资源管理无关的数据片的高度灵活性repartion缺陷:

惯性计算的缺点也很明显。 默认情况下不保存中间数据,而是针对每个动作操作重复计算数据,可以进行计算量大的操作

会影响到系统的运算效率

11、RDD有多少种持久化方式?memory_only如果内存存储不了,会怎么操作?
cache和persist
memory_and_disk,放一部分到磁盘
MEMORY_ONLY_SER:同MEMORY_ONLY,但是会使用Java序列化方式,将Java对象序列化后进行持久化。可以减少内存开销,但是需要进行反序列化,因此会加大CPU开销。
MEMORY_AND_DSK_SER:同MEMORY_AND_DSK。但是使用序列化方式持久化Java对象。
DISK_ONLY:使用非序列化Java对象的方式持久化,完全存储到磁盘上。
MEMORY_ONLY_2或者MEMORY_AND_DISK_2等:如果是尾部加了2的持久化级别,表示会将持久化数据复用一份,保存到其他节点,从而在数据丢失时,不需要再次计算,只需要使用备份数据即可。

12、RDD分区和数据块有啥联系?

13、当GC时间占比很大可能的原因有哪些?对应的优化方法是?
垃圾回收的开销和对象合数成正比,所以减少对象的个数,就能大大减少垃圾回收的开销。序列化存储数据,每个RDD就是一个对象。缓存RDD占用的内存可能跟工作所需的内存打架,需要控制好

14、Spark中repartition和coalesce异同?coalesce什么时候效果更高,为什么

repartition(numPartitions:Int):RDD[T]coalesce(numPartitions:Int, shuffle:Boolean=false):RDD[T]

以上为他们的定义,区别就是repartition一定会触发shuffle,而coalesce默认是不触发shuffle的。

他们两个都是RDD的分区进行重新划分,repartition只是coalesce接口中shuffle为true的简易实现,(假设RDD有N个分区,需要重新划分成M个分区)

减少分区提高效率

15、Groupbykey和reducebykey哪个性能更高,为什么?
reduceByKey性能高,更适合大数据集
https://www.jianshu.com/p/0c6705724cff

16、你是如何理解caseclass的?
https://blog.csdn.net/hellojoy/article/details/81034528

17、Scala里trait有什么功能,与class有何异同?什么时候用trait什么时候该用class
它可以被继承,而且支持多重继承,其实它更像我们熟悉的接口(interface),但它与接口又有不同之处是:
trait中可以写方法的实现,interface不可以(java8开始支持接口中允许写方法实现代码了),这样看起来trait又很像抽象类

18、Scala 语法中to 和 until有啥区别
to 包含上界,until不包含上界

19、讲解Scala伴生对象和伴生类
单例对象与类同名时,这个单例对象被称为这个类的伴生对象,而这个类被称为这个单例对象的伴生类。伴生类和伴生对象要在同一个源文件中定义,伴生对象和伴生类可以互相访问其私有成员。不与伴生类同名的单例对象称为孤立对象。

import scala.collection.mutable.Map class ChecksumAccumulator { private var sum = 0 def add(b: Byte) { sum += b } def checksum(): Int = ~(sum & 0xFF) + 1} object ChecksumAccumulator { private val cache = Map[String, Int]() def calculate(s: String): Int = if (cache.contains(s)) cache(s) else { val acc = new ChecksumAccumulator for (c <- s) acc.add(c.toByte) val cs = acc.checksum() cache += (s -> cs) println("s:"+s+" cs:"+cs) cs } def main(args: Array[String]) { println("Java 1:"+calculate("Java")) println("Java 2:"+calculate("Java")) println("Scala :"+calculate("Scala")) }}

20、spark作业执行流程

客户端提交作业Driver启动流程Driver申请资源并启动其余Executor(即Container)Executor启动流程作业调度,生成stages与tasks。Task调度到Executor上,Executor启动线程执行Task逻辑Driver管理Task状态Task完成,Stage完成,作业完成

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。