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

分区内数据的执行是有序的

参考

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