请解释 PySpark 中 RDD 的概念,并阐述它的主要特性有哪些?
考察说明
考查对 PySpark 核心抽象 RDD 的基本概念和特性的理解。
回答思路
- 【回答框架 1】RDD(弹性分布式数据集)是 PySpark 中最基础的数据抽象,代表一个不可变、可分区的记录集合,这些分区可以并行计算,且能够自动进行故障恢复。
- 【回答框架 2】RDD 的主要特性包括:不可变性(数据一旦创建不可修改,只能通过转换操作生成新 RDD)、弹性(通过血缘关系实现容错,分区丢失时可重新计算)、分区性(数据分布到集群多个节点,支持并行处理)以及惰性求值(转换操作只记录血缘,行动操作才真正计算)。
- 【回答框架 3】RDD 支持两类操作:转换操作(如 map、filter)和行动操作(如 collect、count),转换操作是惰性的,行动操作会触发实际计算。RDD 适用于需要低延迟、精细控制数据分区和容错策略的场景,但相比 DataFrame,其性能优化和内置函数较少。
- 【关键点 1】RDD 是弹性分布式数据集,具有不可变性、分区性和容错性。
- 【关键点 2】RDD 通过血缘关系实现容错,分区数据丢失时可自动重新计算。
- 【关键点 3】RDD 操作分为惰性的转换操作和触发计算的行动操作。
- 【关键点 4】RDD 适合需要精细控制分区和容错场景,但 DataFrame 通常性能更优。
- 【易错点 1】RDD 的不可变性是设计特性,不是缺陷,不能通过修改来实现更新。
- 【易错点 2】RDD 的弹性指容错能力,不是指数据量可变。
- 【易错点 3】惰性求值意味着转换操作不会立即执行,需行动操作触发。