作者:empty 页数:166 出版社:empty |
Spark的shell作为一个强大的交互式数据分析工具, 提供了一个简单的方式来学习API, 它可以使用Scala(在Java虚拟机上运行现有的Java库的一个很好方式) 或Python。在SparkSpark最主要的抽象是叫Resilient Distributed Dataset(RDD) 的弹性分布式集合。RD Ds可以使用Had oop Input Formats(例如HDFS文件) 创建, 也可以从其他的RD DS转换。让我们在Spark源代码目录从README文本文件中创建一个新的RDD,RDD的actions从RDD中返回值, transformations可以转换成一个新RDD并返回它的引现在让我们使用一个transformation, 我们将使用filter在这个文件里返回一个包含子数据集
现在假设我们想要使用Spark API写一个独立的应用程序。我们将通过使用Scala(用SBT) ,Java(用Maven) 和Python写一个简单的应用程序来学习,我们用Scala创建一个非常简单的Spark应用程序。如此简单, 事实上它的名字叫Sir pleA pp.scala:这个程序仅仅是在Spark README中计算行里面包含‘a'和包含‘b'的次数。你需要注意将始化了自己的spark Context, 我们把Spark Context初始化作为程序的一部分。我们通过Spark Context的构造函数参人Spark Conf对象, 这个对象包含了一些关于我们程序我们的程序依赖于Spark API, 所以我们需要包含一个sbt文件文件,sin ple.sbt解释了Spark是一个依赖。这个文件还要补充Spark依赖于一个repository:
宏观上说, 每个Spark应用程序都由一个驱动程序(driver program e) 构成, 驱动程序在集群上抽象是提供一个弹性分布式数据集(RDD resilient distributed dataset) , RDD是指能横跨集群所有节点进行并行计算的分区元素集合。RDD可以从Had oop文件系统中的一个文件中创建而来(或其他Had oop支持的文件系统) , 或者从一个已有的Scala集合转换得到。用户可以要求Spark将RDD持久化(persist) 到内存中, 来让它在并行计算中高效地重用。最后, RDD能从节Spark的第二个抽象是共享变量(shared variables) , 共享变量能被运行在并行计算中。默认情况下, 当Spark运行一个并行函数时, 这个并行函数会作为一个任务集在不同的节点上运行, 它会把函数里使用的每个变量都复制搬运到每个任务中。有时,一个变量需要被共享到交叉任务中或驱动程序和任务之间。Spark支持2种类型的共享变量:广播变量(broadcast variables) , 用来在所有节点的内存中缓存一个值; 累加器(accumulators) , 仅仅只能执行 添加(added) 操作, 例如:记敌器(counters) 和求和(sums) 。这个指南会在Spark支持的所有语言中演示它的每一个特征, 可以非常简单地从一个spark交互