RDD(Resilient Distributed Datasets,弹性分布式数据集)
RDD 是 Apache Spark 的核心数据结构,代表一个不可变(immutable)、分布式、可分区的数据集合,能够并行计算,并具备容错性。
1. RDD 的核心特性
特性 | 说明 |
---|---|
弹性(Resilient) | 数据丢失时可自动恢复(通过血缘关系 Lineage 重新计算)。 |
分布式(Distributed) | 数据分布在集群的不同节点上,并行处理。 |
不可变(Immutable) | 创建后不能直接修改,只能通过转换(Transformation)生成新的 RDD。 |
可缓存(Cacheable) | 可持久化到内存或磁盘,加速重复计算。 |
类型推断(Typed) | RDD 存储的数据有类型(如 RDD[Int] 、RDD[String] )。 |
2. RDD 的创建方式
RDD 可以通过以下方式创建:
(1) 从内存集合(Parallelize)
python
from pyspark import SparkContext sc = SparkContext("local", "RDD Example") data = [1, 2, 3, 4, 5] rdd = sc.parallelize(data) # 将 Python 列表转为 RDD
(2) 从外部存储(如 HDFS、本地文件)
python
# 从文本文件创建 rdd = sc.textFile("hdfs://path/to/file.txt") # HDFS rdd = sc.textFile("file:///local/path/file.txt") # 本地文件