在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的示例代碼:
// 通過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具有更好的容錯性和分布式計算能力。