Spark從入門到精通五----RDD的產生背景---建立方式及分割槽說明
交流QQ: 824203453
- 彈性分散式資料集RDD
- RDD概述
-
-
- 產生背景
-
為了解決開發人員能在大規模的叢集中以一種容錯的方式進行記憶體計算,提出了RDD的概念,而當前的很多框架對迭代式演算法場景與互動性資料探勘場景的處理效能非常差, 這個是 RDDs 的提出的動機。
-
-
- 什麼是RDD
-
RDD是Spark的計算模型。RDD(Resilient Distributed Dataset)叫做彈性的分散式資料集合,是Spark中最基本的資料抽象,它代表一個不可變、只讀的,被分割槽的資料集。
操作RDD 就像操作本地集合一樣,有很多的方法可以呼叫,使用方便,而無需關心底層的排程細節。
-
- 建立RDD
- 集合並行化建立(通過scala集合建立) scala中的本地集合—> spark RDD
val arr = Array(1,2,3,4,5)
val rdd = sc.parallelize(arr)
val rdd =sc.makeRDD(arr)
通過集合並行化方式建立RDD,適用於本地測試,做實驗
- 外部檔案系統,比如HDFS等
val rdd2 = sc.textFile("hdfs://hdp-01:9000/words.txt")
// 讀取本地檔案
val rdd2 = sc.textFile(“file:///root/words.txt”)
3)
呼叫Transformation類的方法,生成新的RDD
spark上的所有的方法,有一個專有的名詞,叫做運算元。
-
- RDD的分割槽
說對rdd進行操作,實際上是操作的rdd中的每一個分割槽,分割槽的數量決定了並行的數量。
使用rdd.partitions.size檢視分割槽數量。
如果從外部建立RDD,比如從hdfs中讀取資料, 正常情況下,分割槽的數量是和我們讀取的檔案的block塊數量是一致的,但是如果只有一個block 塊,那麼分割槽數量是2。 也就是說最低的分割槽數量是2。
如果是集合並行化建立得到的rdd,分割槽的數量,預設的和最大可用的cores數量
(--total-executor-cores > 可用的cores? 可用的cores:--total-executor-cores)
通過集合並行化建立的rdd是可以任意修改分割槽的數量的。
交流QQ: 824203453