Spark Core

Spark Core

💡 原文中文,约38200字,阅读约需91分钟。
📝

内容提要

本文介绍了Spark Core的基本功能和应用场景,RDD的特性和转换算子和行动算子的使用,共享变量的使用方法和原理,内核调度和DAG的作用,宽窄依赖和内存迭代计算的优势,并行度设置和Shuffle阶段的工作原理,以及任务调度和层级关系。

🎯

关键要点

  • Spark Core 是 Apache Spark 的核心模块,支持分布式内存计算和数据处理。
  • RDD(弹性分布式数据集)是 Spark 的基本数据抽象,支持高效的并行计算和容错机制。
  • RDD 的特性包括不可变性、可分区性和支持并行计算。
  • RDD 的创建可以通过并行化集合或读取外部数据源实现。
  • RDD 的算子分为转换算子和行动算子,转换算子是懒加载的,行动算子会触发计算。
  • 常用的转换算子包括 map、flatMap、filter、reduceByKey 等。
  • 行动算子包括 collect、count、first、take 等,用于获取计算结果。
  • RDD 的持久化可以通过缓存和检查点实现,缓存可以提高性能,检查点用于安全存储。
  • DAG(有向无环图)是 Spark 任务调度的核心,描述了作业的各个阶段及其依赖关系。
  • 宽依赖和窄依赖影响 DAG 的阶段划分,窄依赖可以在内存中高效执行,而宽依赖需要进行数据洗牌。
  • Spark 的并行度设置影响任务的执行效率,建议设置为 CPU 核心数的 2 到 10 倍。
  • Shuffle 是连接 map 和 reduce 的桥梁,涉及序列化、网络 IO 和磁盘读写。
  • Spark 的任务调度通过 DAG Scheduler 和 Task Scheduler 管理任务的分配和执行。

延伸问答

Spark Core 的主要功能是什么?

Spark Core 是 Apache Spark 的核心模块,提供分布式内存计算和数据处理的基础支持。

RDD 的特性有哪些?

RDD 的特性包括不可变性、可分区性和支持并行计算。

如何创建 RDD?

RDD 可以通过并行化集合或读取外部数据源(如文件)来创建。

Spark 中的转换算子和行动算子有什么区别?

转换算子是懒加载的,返回值仍是 RDD;行动算子会触发计算,返回非 RDD 的结果。

DAG 在 Spark 中的作用是什么?

DAG 描述了 Spark 作业的各个阶段及其依赖关系,是任务调度和执行的核心。

Spark 的并行度应该如何设置?

建议将并行度设置为 CPU 核心数的 2 到 10 倍,以提高任务执行效率。

➡️

继续阅读