Spark 的核心抽象是 RDD(弹性分布式数据集)。理解了 RDD 和它的 Transformation/Action 操作,就掌握了 Spark 的灵魂。

一、Spark 为什么快

  • 1.1 内存计算——中间结果不进磁盘
  • 1.2 DAG 调度——优化执行计划
  • 1.3 与 MapReduce 的性能对比

二、RDD——弹性分布式数据集

  • 2.1 什么是 RDD——不可变的分布式集合
  • 2.2 分区——并行计算的基本单位
  • 2.3 容错——Lineage 血统重算
  • 2.4 依赖关系——窄依赖 vs 宽依赖

三、Transformation(转换)

  • 3.1 map / filter / flatMap
  • 3.2 reduceByKey / groupByKey——注意 Shuffle
  • 3.3 join / union / distinct
  • 3.4 惰性求值——Transform 不立即执行

四、Action(动作)

  • 4.1 count / collect / take
  • 4.2 saveAsTextFile / foreach
  • 4.3 Action 触发真正的计算

五、一个 WordCount 示例

  • 5.1 从文件创建 RDD
  • 5.2 flatMap → map → reduceByKey
  • 5.3 保存结果