Spark学习笔记(二)-弹性分布式数据集RDDs

Spark-弹性分布式数据集RDDs

    在阅读很多的Spark简介中,都及多的提到RDDs这个名词。官方文档指出:Spark 核心的概念是 Resilient Distributed Dataset (RDD):一个可并行操作的有容错机制的数据集合。这句话说明RDD的本质是集合,这个集合带有并行操作和容错机制。
    官方文档指出有两种方式创建RDD,一种是在你的驱动程序中并行化一个已经存在的集合。这句话说明,我们要在我们的程序中将一个集合并行化。集合的概念很宽泛,集合可以是浮点数的集合也可以是整数的集合,也可以是类的集合。这里我们先把集合初步理解为数值的集合。在C语言中,数值的集合我很容易知道就是数组。那么如何是并行化?

并行集合

并行集合 (Parallelized collections) 的创建是通过在一个已有的集合(Scala Seq )上调用 SparkContext 的 parallelize 方法实现的。集合中的元素被复制到一个可并行操作的分布式数据集中。 [ Spark编程指南 ]

例如:

val data = Array(1, 2, 3, 4, 5)
val distData = sc.parallelize(data)

    一旦创建完成,这个分布式数据集( distData )就可以被并行操作。例如,我们可以调用 distData.reduce((a, b) => a + b)将这个数组中的元素相加。我们以后再描述在分布式上的一些操作。
    为什么说将数组相加是分布式操作,因为我们知道在C语言中,对元素的运算是逐步运算的,一般是取出某个元素,然后再取出一个元素,然后对两个元素求和,最后在赋值回去,spark的运算是并行的,取出元素可以认为是同时取然后算存储回去。C语言只能同时计算val data 中的1+2,但是spark可以做到在计算1+2同时计算3+4且同时计算4+5,这个就是spark的并行计算特性。

你可能感兴趣的:(Ubuntu,spark)