随着大数据技术的快速发展,Apache Spark作为主流的大数据处理框架,已成为众多企业招聘大数据工程师时的必考内容。本文整理了Spark面试中的核心知识点和常见问题,帮助求职者系统准备。
一、Spark基础概念
1. Spark与Hadoop MapReduce的主要区别是什么?
Spark基于内存计算,执行速度比MapReduce快10-100倍;提供丰富的API(Scala、Java、Python、R);支持流处理、机器学习等更多计算模式。
2. 解释Spark的核心组件
• Spark Core:提供基本功能,包含任务调度、内存管理、容错机制
• Spark SQL:用于处理结构化数据的模块
• Spark Streaming:实时流数据处理
• MLlib:机器学习算法库
• GraphX:图计算库
二、RDD核心知识点
1. 什么是RDD?其主要特性有哪些?
RDD(弹性分布式数据集)是Spark的基本数据结构,具有:
• 分区性:数据被分割成多个分区
• 容错性:通过血缘关系实现数据重建
• 不可变性:创建后不能修改
• 并行操作:支持并行处理
2. RDD的两种操作类型
• 转换操作(Transformation):懒执行,如map、filter、groupByKey
• 行动操作(Action):触发计算,如count、collect、saveAsTextFile
三、Spark运行架构
1. Driver Program和Executor的作用
Driver是应用程序的主进程,负责创建SparkContext、调度任务;Executor是工作节点上的进程,负责执行具体任务和存储数据。
2. Spark任务执行流程
从RDD对象构建DAG图 → DAGScheduler将DAG划分为Stage → TaskScheduler将Task分发到Executor执行。
四、性能优化相关问题
1. 如何避免Spark中的shuffle操作?
尽量使用reduceByKey代替groupByKey,因为前者会在map端进行combine操作,减少数据传输。
2. 什么情况下会出现数据倾斜?如何解决?
当某个key的数据量远大于其他key时会发生数据倾斜。解决方案包括:
• 使用随机前缀进行双重聚合
• 调整并行度
• 使用广播变量
五、实战场景题
1. 假设有1TB的日志文件,如何统计每个IP的访问次数?
sc.textFile("hdfs://...")
.map(line => (line.split(" ")[0], 1))
.reduceByKey( + )
.saveAsTextFile("output_path")
2. 如何实现Spark Streaming实时统计每5分钟的PV?
使用window操作,设置窗口长度为5分钟,滑动间隔为5分钟。
六、进阶问题
1. Spark SQL中DataFrame和Dataset的区别
DataFrame是Dataset[Row]的类型别名,Dataset是强类型的数据集合。
2. Spark on YARN的两种部署模式
• Client模式:Driver在客户端运行
• Cluster模式:Driver在YARN集群中运行
备考建议:
除了掌握理论知识外,建议实际编写Spark代码,理解不同操作的执行原理。同时关注Spark 3.x的新特性,如动态分区裁剪、自适应查询执行等优化功能。面试时要准备好项目经验分享,展示解决实际问题的能力。