请说明在 Spark 中创建 RDD 的常见方式有哪些?
考察说明
考查对 Spark RDD 创建方式的掌握程度。
回答思路
- 【回答框架 1】创建 RDD 主要有三种方式:从现有集合创建、从外部存储系统读取数据创建、从已有 RDD 转换生成。其中,从集合创建使用 parallelize 方法,从外部存储通常通过 textFile 等读取文件。
- 【回答框架 2】从集合创建 RDD 时,parallelize 方法接收一个 Scala 或 Java 集合作为参数,并可指定分区数,若不指定则默认使用集群的并行度。这种方式常用于小数据集的本地测试。
- 【回答框架 3】从外部存储创建 RDD 是最常见的生产场景,例如使用 sc.textFile 读取 HDFS 或本地文件系统中的文本文件,该方法会按行切分数据。此外,还可以通过 sc.wholeTextFiles 读取整个文件为键值对,或使用其他格式的输入源如 JDBC 等。
- 【回答框架 4】从已有 RDD 转换生成新 RDD 是 Spark 编程的核心,通过 map、filter、flatMap 等转换算子对现有 RDD 进行操作,产生新的 RDD,但转换是惰性的,真正计算发生在行动算子触发时。
- 【回答框架 5】无论哪种创建方式,RDD 都具有不可变性、分区性和弹性等特性,创建后数据不可修改,只能通过转换生成新 RDD。选择创建方式需考虑数据规模、来源和性能要求。
- 【关键点 1】并行化集合创建 RDD 使用 parallelize 方法。
- 【关键点 2】从外部存储(如 HDFS)创建 RDD 常用 textFile 方法。
- 【关键点 3】通过转换算子从已有 RDD 生成新 RDD,且转换是惰性的。
- 【易错点 1】不要混淆 RDD 的创建与行动操作,转换算子不会立即执行。
- 【易错点 2】平行化集合创建不适用于大规模数据,会占用驱动端内存。