Spark作为大数据组件中的执行引擎,具备以下显著优势:
高效性:Spark在内存计算模式下比MapReduce快100倍。Spark利用先进的DAG调度程序、查询优化程序和物理执行引擎,实现了批处理和流式数据的高性能处理。
易用性:Spark支持Java、Python和Scala的API,并提供了超过80种高级算法,使用户能够快速构建多样化的应用。
通用性:Spark提供了一套统一的解决方案,可用于批处理、交互式查询(Spark SQL)、实时流处理(Spark Streaming)、机器学习(Spark MLlib)和图计算(GraphX)。这些不同类型的处理都可以在同一应用中无缝衔接。
兼容性:Spark可以与许多开源项目兼容使用。例如,Spark可以使用Hadoop的YARN和Apache Mesos作为资源管理和调度器,并且可以读取多种数据源,如HDFS、HBase、MySQL等。对于已经部署Hadoop基础集群的企业,无需进行数据迁移即可快速利用Spark的强大数据处理和计算能力。
可以说,Spark几乎是企业搭建大数据平台不可或缺的组件。数据分析工程师在工作中频繁需要使用Spark来执行程序、调试程序和查询数据,因此对Spark知识的考察变得十分必要。
对于概念性的知识点,可以在面试前进行突击复习,阅读类似的面试指南。对于代码题或项目题,则需要依靠平时的工作和学习积累,多写代码并加入自己的思考。
基本概念
Spark支持哪些编程语言?
Spark同时支持Scala、Python、Java和R四种编程语言。通常情况下,考虑到大数据处理的特性,优先选择Scala进行编程。
Spark有哪些特点?在处理大数据时有何优势?
Spark中的Worker主要负责什么?
主要职责是管理当前节点的内存和CPU使用情况,接收来自Master的资源指令,通过ExecutorRunner启动任务并分配工作。Worker类似于包工头,负责管理和分配新进程。
注意:
Spark Driver的主要功能是什么?
Spark如何实现容错?
分布式数据集的容错一般有两种方式:数据检查点和记录数据的更新。对于大规模数据分析,数据检查点的成本很高,因此Spark采用记录更新的方式。然而,如果更新粒度太细,记录更新成本也不低。因此,RDD仅支持粗粒度转换,即记录单个块上的操作,从而通过“血缘”机制(Lineage)恢复丢失的分区。
SparkContext和SparkSession有何区别和联系?
SparkContext是使用Spark功能的入口点。SparkSession是在Spark 2.x版本后引入的概念,旨在统一不同类型的Context。在2.x之前,需要根据不同功能使用不同的Context,如SparkContext用于RDD操作、StreamingContext用于流处理、SQLContext用于SQL查询、HiveContext用于Hive操作。而在2.x中,SparkSession整合了SQLContext、HiveContext和SparkContext的功能。
Hadoop和Spark在并行计算方面有何异同?
Spark有哪些组件?每个组件的功能是什么?对应的应用场景是什么?
Spark有哪些部署形式?每种形式的特点是什么?
Spark有哪些存储级别?
RDD的优势是什么?
DataFrame的特性是什么?
RDD中的转换(Transformation)和动作(Action)的区别是什么?
转换操作会产生新的RDD,但不会触发计算;动作操作会触发计算并将结果返回给程序。
RDD中有哪几种依赖?作用是什么?
有窄依赖(Narrow Dependencies)和宽依赖(Wide Dependencies)。窄依赖是指父RDD的每个分区只被子RDD的一个分区使用,而宽依赖是指父RDD的分区被多个子RDD的分区使用。窄依赖用于划分Stage。
RDD有哪几种操作类型?
Cache和Persist的区别是什么?
Cache是Persist的一种特殊形式,缓存级别为MEMORY_ONLY。Persist可以设置不同的缓存级别。
RDD、DataFrame和DataSet的区别是什么?
RDD全称Resilient Distributed Dataset,是Spark的基本数据结构,支持弹性分布和只读分区集合。DataFrame在RDD基础上增加了Schema,支持更多数据处理操作。DataSet是DataFrame API的扩展,提供强类型支持。
希望以上内容对您有所帮助,如有任何疑问,请随时提问!