这一章主要介绍SPARK中的重要抽象,然后用实例讲解如何使用SPARK进行分布式程序的开发。
概述
从上层来看,每个spark应用程序都是由驱动程序构成。这个驱动程序执行我们应用程序的main方法,并在集群上并行执行多种操作。
弹性分布式数据(RDD)是spark提供的重要抽象。它是分布在集群的节点之上的,可以并行计算的一组数据集合。RDDs可以由hadoop文件系统或者其它任何hadoop支持的文件系统上的文件创建,或者驱动程序中的Scala集合创建,或者由这些做转换操作得到。用户也可以将内存中的RDDs持久化,这样可以在并行处理中高效的恢复。最后,RDDs可以自动从失败的节点上还原。
Spark的另外一个抽象是可以在并行处理中使用的共享变量。缺省情况下,当spark在不同的节点上并行的执行一组任务中的函数时,它将函数中用到的每个变量的拷贝传递给每个任务。有些情况下,变量需要在任务之间共享,或者在任务和驱动程序之间共享。
Spark支持两种类型的共享变量:
1.广播变量:可以将共享变量缓存在所有节点上。
2.累加器:只能被用来增加操作,如计数和总和。