在Apache Spark中,RDD(Resilient Distributed Dataset)是一个基本的、不可变的、分布式的和可分区的数据集。它能够自动进行容错处理,并支持在大规模集群上的并行操作。RDD之间存在依赖关系,可以实现管道化,避免了中间数据的存储。
创建RDD的方式有以下几种:
-
通过集合创建RDD,例如使用
parallelize()
方法或makeRDD()
方法将List或Array转换为RDD。这种方式创建的RDD是基于内存中的集合,适合小规模数据。 -
通过外部存储系统中的数据集创建RDD,如本地文件、HDFS文件、HBase文件等。可以使用
textFile()
方法读取文本文件生成RDD。-
对于本地模式的Spark Shell,可以直接读取本地文件,也可以读取HDFS文件。读取本地文件时,加不加
file://
前缀都可以;读取HDFS文件时,需要添加hdfs://master:9000
前缀。 -
对于集群模式的Spark Shell,只能读取HDFS文件生成RDD,不能读取本地文件。读取HDFS文件时,必须添加
hdfs://master:9000
前缀。
-
下面是一些创建RDD的示例代码:
scala
// 通过List创建RDD
val rddFromList = sc.parallelize(List(1, 2, 3, 4, 5, 6, 7, 8))
// 通过Array创建RDD
val rddFromArray = sc.parallelize(Array("北京", "上海", "广州", "深圳", "泸州"))
// 通过本地文件创建RDD
val rddFromLocalFile = sc.textFile("/home/test.txt")
// 通过HDFS文件创建RDD
val rddFromHDFSFile = sc.textFile("hdfs://master:9000/luzhou/test.txt")
需要注意的是,创建的RDD是分布式的集合,可以在集群上进行并行操作。相比于Scala的List和Array,RDD具有更好的容错性和分布式计算能力。