中间件速查手册
大数据计算弹性分布式数据集

RDD 是什么?

不可变、可分区的数据集合,记的是“怎么算出来的”而不是数据本身

类比:菜谱,每一步都记着,锅糊了照着重做一遍就行

三个关键词

弹性、分布式、数据集,每个词都对应一个设计取舍。

  • 不可变:每个转换都生成新 RDD,天然适合并行和重算
  • 分区:数据按分区散在多个节点,一个分区一个 Task
  • 血缘(lineage):记录从哪个父 RDD 经过什么算子得来,丢了可以重算

惰性求值

map / filter / join 这些 transformation 不会立刻执行,只是往血缘图里加一笔;直到遇到 count、collect、write 这类 action 才真正触发计算。好处是 Spark 能看到全貌再做优化(比如合并算子、调整 join 顺序)。

现在还用 RDD 吗

日常写 SQL 和 DataFrame 已经不需要直接操作 RDD 了,但 DataFrame 底层仍是 RDD + Catalyst 优化器。理解 RDD 主要是为了看懂血缘、分区、缓存(persist)这些概念——它们决定了作业跑得快不快。

它出现在这些中间件里

相关概念