在Spark中創建RDD的創建方式可以分為四種:
ps:本文代碼基於spark on zeppelin實現
1、從集合(內存)中創建RDD
從集合中創建RDD,Spark主要提供了兩個方法:parallelize和makeRDD
// 使用parallelize方法 val rdd1 = sc.parallelize(List(1,2,3,4)) //使用makeRDD方法 val rdd2=sc.makeRDD(List(1,2,3,4))) //輸出 rdd1.collect().foreach(println) rdd2.collect().foreach(println)
從底層代碼實現來講,makeRDD方法其實就是parallelize方法
def makeRDD[T: ClassTag]( seq: Seq[T], numSlices: Int = defaultParallelism): RDD[T] = withScope {
parallelize(seq, numSlices) }
2、從外部存儲文件創建RDD
由外部存儲系統的數據集創建RDD包括:本地的文件系統,所有Hadoop支持的數據集,比如HDFS、HBase等。
//輸入文件路徑讀取內容 val fileRDD: RDD[String] = sc.textFile("path") fileRDD.collect().foreach(println)
Spark中文件路徑的編寫方式:Spark中textFile從外部讀取數據的用法 - 干了這瓶老干媽 - 博客園 (cnblogs.com)
3、從其它RDD創建
通過一個RDD運算完后,再產生新的RDD。(主要是根據RDD不可變的特性)
4、直接創建RDD(new)
使用new的方式直接構造RDD,一般由Spark框架自身使用。