RDD(彈性分佈式數據集)是Spark的核心抽象。它是一組元素,在集群的節點之間進行分區,以便我們可以對其執行各種並行操作。
有兩種方法可以用來創建RDD:
- 並行化驅動程式中的現有數據
- 引用外部存儲系統中的數據集,例如:共用檔系統,HDFS,HBase或提供Hadoop InputFormat的數據源。
並行化集合
要創建並行化集合,請在驅動程式中的現有集合上調用SparkContext
的parallelize
方法。複製集合的每個元素以形成可以並行操作的分佈式數據集。
val info = Array(1, 2, 3, 4)
val distinfo = sc.parallelize(info)
現在,可以操作分佈式數據集(distinguishedfo),例如:distinfo.reduce((a, b) => a + b)
。
外部數據集
在Spark中,可以從Hadoop支持的任何類型的存儲源(如HDFS,Cassandra,HBase甚至本地檔系統)創建分佈式數據集。Spark提供對文本檔,SequenceFiles
和其他類型的Hadoop InputFormat的支持。
SparkContext
的textFile
方法可用於創建RDD的文本檔。此方法獲取檔的URI(電腦上的本地路徑或hdfs://
)並讀取檔的數據。
現在,可以通過數據集操作來運算元據,例如使用map
和reduceoperations
來添加所有行的大小,如下所示:data.map(s => s.length).reduce((a, b) => a + b)
。