本文基于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
分区内数据的执行是有序的
网友评论