Spark 面试总结

Spark 通用问题

任务提交流程

  1. 用户创建Spark程序并提交
  2. 每个action会生成一个job,包含了一系列的RDD和对其如何进行操作的transformation
  3. 每个job生成一个DAG(有向无环图)
  4. DAGScheduler根据宽依赖对DAG进行划分stage并生成task组(一个stage对应一组task,一个partition对应一个task)
  5. Spark集群在worker上以一组Task为单位进行执行计算
image.png

宽窄依赖

image.png
  • 窄依赖: 一个父RDD的 partition 至多被子 RDD 某个partition 使用一次 (union, map,filter)
  • 宽依赖: 一个父RDD 的partition会被子RDD的partition使用多次,有 shuffle ,遇到shuffle,stage会被拆分

Spark中产生宽窄依赖的依据为是否会产生shuffle,当发生shuffle时,会产生宽依赖,基本上shuffle算子都会产生宽依赖,但是join除外,在执行join算子之前如果先执行groupByKey,执行groupByKey之后,会把相同的key分到同一个分区,再执行join算子,join算子是把key相同的进行join(只是对于k v形式的数据可以使用),不一定会产生shuffle

Spark core

执行流程详解

Spark on yarn 执行流程

Spark SQL

dataFrame、dataset、RDD 的区别和联系

Spark Streaming

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容