Spark面试题及答案.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

Spark面试题及答案

一、基础概念类

问题:Spark中的Driver和Executor分别负责什么?实际运行中它们的部署方式有哪些?

答案:Driver是Spark应用的主进程,主要做两件事:一是解析用户写的代码(比如Scala/Python脚本),把任务拆成DAG(有向无环图);二是负责集群资源申请、任务分配和监控(比如跟踪Executor是否存活、任务执行进度)。Executor就是具体干活的进程,跑在Worker节点上,主要负责执行Driver分配的Task,并且会缓存计算过程中的数据(比如用cache()缓存的RDD)。

部署方式常见两种:一是YARN模式下,Driver可以在客户端(Client模式,适合调试,Driver跑在提交任务的机器上),也可以在YARN集群内部(Cluster模式,适合生产,Driver跑在YARN的NodeManager上,更稳定);二是Standalone模式,Driver通常在提交任务的机器,Executor跑在集群的Worker节点。

问题:RDD的五大特性是什么?这些特性在实际计算中起到什么作用?

答案:RDD的五大特性是:①不可变(Immutability),创建后不能修改,只能通过转换算子生成新RDD;②分布式存储(Partitioned),数据分成多个分区存在不同节点;③依赖关系(Dependencies),每个RDD记录它从哪个父RDD来,形成依赖链;④分区计算函数(ComputeFunction),每个分区的计算逻辑由函数定义,并行执行;⑤可选的分区器(Partitioner),比如HashPartitioner、RangePartitioner,控制数据如何分区(只有Key-Value型RDD有)。

实际作用:不可变让容错变简单,出错了能通过依赖链重新计算;分布式存储和分区计算保证并行性,提高效率;依赖关系是Spark做DAG优化的基础(比如合并连续的窄依赖任务);分区器能减少Shuffle数据量,比如按Key分区后,相同Key的Task能在同一节点执行。

二、核心原理类

问题:Spark中的Shuffle机制是什么?它会带来哪些性能问题?实际中怎么减少Shuffle的影响?

答案:Shuffle简单说就是“数据重新分布”的过程——当算子需要跨分区聚合数据时(比如groupByKey、reduceByKey),每个Executor会把自己的数据按目标分区规则(比如按Key哈希)分成多份,先写到本地磁盘(Map端),然后其他Executor再去拉取属于自己的那份数据(Reduce端),最后在本地聚合。

性能问题主要是:①磁盘IO多,Map端写文件、Reduce端拉文件都占IO;②网络传输数据量大,容易堵带宽;③容易产生小文件,后续任务读小文件效率低。

实际优化手段:①优先用有预聚合的算子,比如用reduceByKey代替groupByKey(reduceByKey会先在Map端做局部聚合,减少Shuffle数据量);②调整Shuffle并行度,通过spark.sql.shuffle.partitions(SparkSQL)或spark.default.parallelism(RDD)设合适的值,一般设为集群CPU核心数的1-2倍,避免并行度过低导致单个Task处理数据太多;③开启Shuffle文件合并,spark.shuffle.consolidateFiles设为true,把多个Map任务的输出合并成一个文件,减少小文件数量。

问题:SparkSQL的执行流程是什么?和Hive相比,它的优势在哪里?

答案:SparkSQL执行流程大概分四步:①解析(Parse),把SQL字符串变成抽象语法树(AST),比如把“SELECTnameFROMuserWHEREage18”拆成关键词;②分析(Analyze),结合元数据(比如Hive元库的表结构)验证AST的合法性,比如检查name、age字段是否存在,表是否存在;③优化(Optimize),用Catalyst优化器做逻辑优化(比如谓词下推,把WHERE条件提前到扫描数据时执行,减少后续处理的数据量)和物理优化(比如选择Join策略,小表和大表Join用BroadcastJoin,避免Shuffle);④执行(Execute),把优化后的逻辑计划转成物理计划(比如生成RDD的一系列操作),然后提交任务执行。

和Hive比优

文档评论(0)

151****9429 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档