本文基於Spark架構
目錄
引入
Spark的基礎是Spark Core
Spark Core的核心是RDD
定義
RDD(Resilient Distributed Dataset) = 彈性分佈式數據集
展開了說 = 彈性的、不可變、分區並行計算的集合
特性
彈性
存儲的彈性:內存與磁盤的自動切換
容錯的彈性:數據丟失可以自動恢復
計算的彈性:計算出錯重試機制
分片的彈性:可根據需要重新分片
彈性容錯效果 可以參考Spark搭建 之 高可用集羣
不可變
- 不可變 想要修改只能產生新的RDD
分區並行
/opt/services/spark/bin/spark-shell
val rdd = sc.makeRDD(List(1, 2, 3, 4))
# :paste
val mapRDD1 = rdd.map(num => {
println("+++++ " + num)
num
})
# Ctrl + D
# :paste
val mapRDD2 = mapRDD1.map(num => {
println("----- " + num)
num
})
# Ctrl + D
mapRDD2.collect()
+++++ 2
+++++ 3
+++++ 4
----- 4
+++++ 1
----- 1
----- 3
----- 2
mapRDD2.partitions.size
# Int = 4
不同分區數據計算是無序的
val rdd = sc.makeRDD(List(1, 2, 3, 4), 1)
# :paste
val mapRDD1 = rdd.map(num => {
println("+++++ " + num)
num
})
# Ctrl + D
# :paste
val mapRDD2 = mapRDD1.map(num => {
println("----- " + num)
num
})
# Ctrl + D
mapRDD2.collect()
+++++ 1
----- 1
+++++ 2
----- 2
+++++ 3
----- 3
+++++ 4
----- 4
mapRDD2.partitions.size
# Int = 1
分區內數據的執行是有序的