【面试】Spark(低频)

一、Spark

1.1、Spark基础

1、Spark 1.X与Spark 2.X区别。
  • 1)性能:优化Spark内存和CPU使用,逼近物理机器性能极限。
  • 2)功能:Spark SQL–统一DataFrame和DataSet API,支持SQL 2003;Spark Streaming–引入Structured Streaming、Spark MILib 2.0诞生。
追问1:运行效率方面,Spark比MapReduce更高。请说明效率更高来源于Spark内置的哪些机制?
2、Spark与Flink。

Spark可提供高速批处理和微批处理模式的流处理,Flink的批处理很大程度是对流处理的扩展。

3、Sparkstreaming和Flink做实时处理的区别。

……

4、Spark RDD介绍,属性,原理。
  1. 介绍:RDD(Resilient Distributed Dataset):弹性分布式数据集,Spark最基本的数据抽象。

  2. 特性

  • 分片(partitions):数据集基本组成单元;
  • 计算函数(computer(p, context)):RDD的每个partition有function,可实现RDD间partition转换;
  • 依赖(dependencies()):RDD间存在依赖关系;
  • 分区器(partitioner()):RDD的分片函数
  • 本地性(preferredLocations()):送达存储位置计算;
  1. 举例:WordCount粗图解RDD
    3
追问1:创建rdd几种方式?
  1. 集合并行化创建
val arr = Array(1,2,3,4,5)
val rdd = sc.parallelize(arr)
val rdd =sc.makeRDD(arr)
  1. 读取外部文件系统。 如hdfs,或者读取本地文件(最常用的方式)
val rdd2 = sc.textFile("hdfs://hdp-01:9000/words.txt")
// 读取本地文件
val rdd2 = sc.textFile(“file:///root/words.txt”)
  1. 从父RDD(调用Transformation类方法)转换成新的子RDD。
追问2:RDD中的数据在哪?

在数据源。RDD只是一个抽象的数据集,我们通过对RDD的操作就相当于对数据进行操作。

追问3:如果对RDD进行cache操作后,数据在哪里?

第一次执行cache算子时会被加载到各个Executor进程的内存中,第二次就会直接从内存读取。

追问4:cache和checkPoint的区别?
  • 比较:cache把RDD计算完放在内存中, 但依赖链不能丢掉,如果节点宕掉,上面cache 的RDD就会丢掉, 需要重新计算;而 checkpoint 是把 RDD 保存在 HDFS中, 是多副本可靠存储,所以会丢掉依赖链。
  • 综合:都是做RDD持久化,因为checkpoint需要把 job 重新从头算一遍, 最好先cache一下, checkpoint就可以直接保存缓存中的 RDD 了, 就无需再算一遍, 对性能有极大的提升。
5、RDD,DataFrame,DataSet的区别?
  • 1)RDD:不可变分布式元素集合,在集群中跨节点分布。

  • 2)DataFrame:以RDD为基础的分布式数据集,类似二维表格。

  • 3)DataSet:强类型的特定领域对象。每个DataSet都有一个DataFrame的非类型化视图,视图是行的数据集。

  • 4)RDD VS DataFrame

4

相同不同
不可变分布式数据集DataFrame数据集都是按指定列存储,即结构化数据,类似
  • 5)RDD VS DataSet
相同不同
-DataSet是特定域对象集合,而RDD是任何对象集合。
-DataSet是强类型,可以用来优化,RDD不行。
  • 6)DataFrame VS DataSet
相同不同
-DataFrame弱类型,执行时进行类型检测;DataSet强类型,编译时检测。
-DataFrame采用Java序列号/kyro序列化;DataSet通过Encoder序列化,支持动态生成代码,直接在bytes层面进行排序。
追问1:创建Dateset几种方式

……

追问2:三者联系、转化?

联系:DataFrame和DataSet在Spark 2.X实现了API统一。RDD更偏底层抽象,DataFrame/DataSet在上面做了一次封装优化,使用更方便。功能上RDD更强大,DataFrame/DataSet能做的RDD都能,反之不行。

转换:
1

追问3:三者优缺点?
对象优点缺点
RDD1)强大:内置很多函数操作,方便处理结构化或非结构化数据。 2)面向对象编程,类型转换安全。1)结构化数据(SQL)处理麻烦。2)Java序列化开销大。3)数据存储在Java堆内存,GC频繁。
DataFrame1)结构化数据处理方便。2)针对性优化。序列号不需带元信息,数据在堆外存中,减少了GC次数。3)Hive兼容,支持HQL、UDF等。1)编译时不能进行安全检测。2)对象支持不友好。内存存储ROW对象,而不能时自定义对象。
DataSet1)支持结构化&非结构化数据。2)支持自定义对象查询。3)堆外内存存储,GC友好。4)类型转化安全,代码优好。-
  • 官方建议使用DataSet。
6、Spark中RDD与Partition的区别

答:Spark中Partition分布在各个节点,最小单元,多个Partition共同组成RDD。同一份数据(RDD)的Partition大小不一,数量不定,根据application里算子和最初数据分块数量决定。这也是为什么叫弹性分布式数据集的原因之一。

追问1:Block VS Partition?

答:HDFS中block是最小存储单元,大小固定,有冗余;而partition是RDD最小计算单元,不固定,无冗余,丢失后可重新计算。

1.2、Spark进阶

1、Spark中广播变量是什么,作用?

广播变量可以将一些共享数据或大变量缓存在Spark集群中,而不用每个task都copy一个副本,后续计算可重复使用,减少网络传输,提高性能。

补充:
1、广播变量只读,保证数据一致性。
2、相比Hadoop分布式缓存,广播内存可以跨作业共享。
追问1:累加器是什么?

累加器可以进行全局汇总,拥有分布式计数的功能。

注意:只有Driver能取到累加器值,Task端是累加操作。
追问2:Hadoop中job和Tasks的区别是什么?

答:Job是我们对一个完整MapReduce程序的抽象封装,Task是job运行时,每一个处理阶段的具体实例,如map task,reduce task,maptask和reduce task都会有多个并发运行的实例。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
数据开发工程师面试中,Spark 是一个非常重要的技术点。以下是一些常见的关于 Spark面试问题: 1. 什么是 SparkSpark 是一个快速、通用的大数据处理引擎,它提供了高级的抽象接口,可以以分布式方式处理大规模数据集。 2. Spark 和 Hadoop 的区别是什么?Spark 和 Hadoop 都是用于大数据处理的工具,但它们在架构和功能上有一些区别。Spark 提供了更快速、交互式的数据处理能力,而 Hadoop 主要用于批处理任务。此外,Spark 还提供了更多的高级特性,如流处理、机器学习和图计算。 3. Spark 的核心组件有哪些?Spark 的核心组件包括 Spark Core、Spark SQL、Spark Streaming、MLlib 和 GraphX。Spark Core 提供了 Spark 的基本功能,而其他组件则提供了更高级的数据处理能力。 4. Spark 支持哪些编程语言?Spark 主要使用 Scala 和 Java 进行编写,但也支持 Python 和 R。 5. SparkRDD 是什么?RDD(Resilient Distributed Dataset)是 Spark 中的核心抽象概念,它是一个可分区、可并行计算的数据集合。RDD 具有容错性和可自动恢复性,并且可以在内存中进行缓存以提高性能。 6. Spark 的缓存机制是什么?Spark 提供了一个分布式的内存缓存机制,可以将数据集存储在内存中以提高读取速度。这对于迭代算法和交互式查询非常有用。 7. Spark 的调优方法有哪些?Spark 的调优方法包括合理设置资源分配、调整并行度、使用持久化缓存、对数据进行分区和合理使用数据结构等。 8. Spark Streaming 是什么?Spark Streaming 是 Spark 提供的一个用于实时流处理的组件,它可以将实时数据流分小批次进行处理,并提供了类似于批处理的 API。 这些是一些常见的 Spark 相关的面试问题,希望能对你有帮助。当然,根据不同的公司和职位要求,可能还会有其他特定的问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值