spark全面个人总结(20个面试点)非网文

1.  请简述Spark的工作原理和架构?

  1. 基于RDD,一种数据结构,含数据项、处理函数、血缘。
  2. spark解析任务,生成rdd,并将系列rdd转换成一系列物理计划,然后发送到集群上的各个节点执行。
  3. spark负责管理这些任务,并分配到集群中的各个执行器,利用分区存储副本实现容错

2.  Spark与Hadoop MapReduce相比,主要有哪些优势?

  1. 速度快 (1.基于内存计算 2.spark更灵活,job数更少)
  2. 易用性,支持多种编程语言 scala java python R
  3. 功能更强大 ,可以做批处理、准实时处理、机器学习和图计算

3.  Spark有哪几种运行模式?请详细解释它们之间的区别。

   spark local 、 spark on mesos、spark standalone、 spark on yarn

   区别:

4.  Spark的RDD(弹性分布式数据集)是什么?它有哪些特性?

 

rdd:抽象数据结构,也是spark最小的计算单元,含数据分区、数据项、转换函数、rdd血缘、 (但并不会存储数据)

特性:

  1. rdd有多个分区构成
  2. 对rdd的每个分区做计算
  3. rdd之间有依赖关系,可以溯源
  4. rdd里面存的数据是key-value形式,则可以传递一个自定义的partition进行重新分区
  5. 存储存取每个partitiion的优先位置。计算每个split时,在split所在机器的本地上运行task是最好的。也就是说 计算靠近数据

5.  Spark的内存计算模型是如何工作的? 

内存管理策略:内存管理器、存储级别、缓存和持久化、内存溢出处理、内存使用监控、内存使用策略

6.  请解释一下Spark的“弹性”特性。

  1. 存储弹性(数据持久化、数据分区、数据复制)
  2. 容错弹性(任务重试、数据恢复、动态资源调整、容错机制(日志记录、检查点))

7.  Spark Streaming与Spark SQL有什么区别? 

  a. 处理的数据类型

     spark streaming主要处理实时流数据,例如来自传感器、日志、社交媒体等的连续数据流

     spark sql侧重于处理结构化的静态数据,例如关系型数据库中的表、parquet格式的文件等

  b.处理方式:

     spark streaming以微批处理的方式处理流数据,将数据流切分成小的批次进行处理

     spark sql 通常是对已经存在的数据集进行一次性的查询和分析操作

8.  Spark如何处理流数据?请举例说明。

     主要通过spark streaming实现。Spark streaming 是spark用于处理实时数据流的组件,它允许你将实时数据流分割成一系列小的批处理,然后在每个微批上运行你的处理逻辑。

步骤:

1.创建一个spark应用程序,并使用sparkcontext初始化spark streaming应用

2.创建dstream:dstream是spark streaming中的基本数据流抽象,定义一个函数从数据源创建dstream

3.在每个微批上运行你的数据处理逻辑

4.运行 spark streaming应用程序

9.  Spark的持久化有哪些级别?它们之间有什么区别?

  1. memory_only  缓存到内存里面
  2. memory_and_disk 优先存内存,内存不足,存储在磁盘上
  3. memory_only_ser 将rdd数据序列化后存储在内存中,能节省内存空间
  4. memory_and_disk_ser: 类似memory_only_ser,但内存不足时会将数据存储到磁盘
  5. disk_only: 将rdd数据全部存储在磁盘中

序列化:是指将对象转换为字节流的过程,以便于在内存、磁盘、网络中传输或存储

10.  Spark的广播变量和累加器有什么用?

  1. 广播变量主要用于在集群中的各个节点之间高效地共享只读文件(比如将小表数据广播到大表数据节点进行本地计算)
  2. 累加器可以实现不同节点之间的共享和累加计算。比如在通过数据集中某个字段值大于10的记录数量,可以创建一个累加器,在处理数据时判断并对累加器进行累加。

 11.  Spark的Shuffle操作是如何进行的?

根据分区策略,每个执行器将数据按照键分组,并发送到相应的目标分区,对每个执行器内部的数据根据键进行排序,写入磁盘,任务调度,决定哪些任务需要拉取哪些shuffle文件,数据拉取、数据合并、数据读取。

12.  Spark中如何进行数据的分区?分区策略对性能有何影响?

spark分区是根本设置的分区策略进行分区的,分区策略有hash分区、range分区(按照指定键值的范围来划分分区)、自定义分区

影响:提高数据读取策略、计算效率、容错性

13.  Spark如何实现数据并行处理?请给出一个具体示例。

分区、执行器都可以实现数据并行处理

14.  Spark如何处理大数据集的内存溢出问题?

  1. 采用序列化存储、数据压缩
  2. 内存管理策略:内存管理器、存储级别、缓存和持久化、内存溢出处理、内存使用监控、内存使用策略

15.  Spark的SparkContext和JobTracker、TaskTracker有什么关系? 

  1. sparkcontext:spark应用程序的控制中心,连接spark集群、任务提交、状态监控、配置参数、rdd创建、执行转换和行动操作等等。
  2. jobtracker:集群的主节点,负责资源管理和作业调度。
  3. tasktracker:工作节点,负责执行分配给它的任务。

早期版本里面,sparkcontext负责与jobtracker通信,提交作业,并管理任务的执行。tasktracker执行jobtracker分配的任务

16.  Spark如何优化数据读写操作?请给出一些建议。

spark的读写流程:数据源加载-RDD转换-持久化-action

读优化:内存缓存、宽窄依赖、数据局部性(spark尝试将数据处理任务调度到存储数据的节点上,减少网络传输延迟)、

写优化:压缩和编码、并行写入、

17.  Spark如何与Hive集成?请简述一下流程

Apache spark与apache hive的集成主要通过spark sql实现,spark sql是spark提供的一个用于处理结构化数据的模块,它允许spark运行sql查询并利用hive的元数据和数据仓库功能。

18.  Spark如何与HDFS、S3等存储系统集成?

配置spark以访问hdfs、s3存储系统,并使用相应的url格式来指定数据路径,从而读取和处理在这些系统中的数据。

19.  Spark如何与其他编程语言集成使用?请举例说明。

1.可以使用spark的各种api,如java api、r api、

2.使用Spark的高级API(如DataFrame和Dataset)

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值