概述
Spark 应用由一个driver program构成。driver运行 用户的main 函数并在不同的集群上执行不同的操作。
resilient distributed dataset
Spark最主要的抽象是提供 resilient distributed dataset (RDD,弹性分布式数据集),由不同集群节点上的元素构成的集合。
RDD可以通过Hadoop等文件系统创建,也可以由driver program上的Scala集合创建。
用户可以在内存上persist(持久化)RDD,以允许在不同地并行节点上高效地重使用。
RDD可以自动从失败节点中恢复。
shared variables
Spark的第二个抽象是可以在不同并行节点上使用的共享变量(shared variables)。一般情况下,Spark运在不同得节点上并行的运行多个任务,每个任务使用的变量不存在关联。有时候,多个任务需要共享同一个变量。Spark提供两种形式的shared variables。
broadcast variable:可以用于在不同节点上的内存上存储一个值。
accumulators : 只可以增加的变量。类似于 计数器和求和。
RDD的创建
从driver 程序中创建
val data = Array(1,3,4)val rdd = sc.parallelize(data)
RDD操作
主要分两种操作:
1、 transformations(转化操作):从现有的数据集合中创建新的数据集合 的操作。
2、actions(行动操作):在数据集上执行计算后,将值返回给driver 程序的操作。
transformations 都是lazy的。只有有action操作时,相应的transformations操作才会执行。
每一个被transformed的RDD可能会需要再次计算,可以使用persist RDD到内存中,保证执行更快更高效,也可以persist到dist中。
