Spark開發 之 RDD簡介

本文基於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

分區內數據的執行是有序的

參考

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章