Spark编程模型之莎士比亚文集词频统计
前段时间因为学校的云计算比赛我无意间接触到了Spark云计算框架,从此对其一发不可收拾,无论从其执行效率还有他的其他方面的架构都感觉到无比强大,作为一个云计算的解决方案他有着比hadoop更好的优越性。因为Spark我又接触到编程语言届的新贵Scala面向对象的函数式编程语言,更是被它的巧妙所折服。
那么问题来了,请问什么事Spark? Spark是一个基于内存计算的开源的集群计算系统,目的是让数据分析更加快速。Spark非常小巧玲珑,由加州伯克利大学AMP实验室的Matei为主的小团队所开发。使用的语言是Scala,项目的core部分的代码只有63个Scala文件,非常短小精悍。
那么接下来讨论Spark编程模型,Spark 应用程序有两部分组成:
– Driver
– Executor
首先由Driver向集群管理器(Cluster Manager)申请资源,Cluster Manager在给出资源之后,Spark 在worker节点启动Executor,然后用Driver将jar包文件传给Executor,并将任务分割成一个个Task分配给Executor运行,Executor运行结束,提交汇总结束任务运行。
Spark进行编程主要是对它的RDD( Resilient Distributed Datasets,弹性分布式数据集)进行操作也就是其中Executor对RDD的操作。
其中RDD的操作主要变现在三方面:1.由Base到RDD,也就是我们可以将HDFS中的文件或者本地的文件转换成RDD。
2.Transformation操作也就是RDD->RDD(RDD之间互相转化的过程)
3.Action操作也就是RDD->driver or Base(RDD返还给Driver或者转化成hfds(或者本地)的文件过程)
一下是我总结的一些函数
因为这是我第一次写关于Spark方面的博客,那么我们就拿Spark的一个比赛中非常简单的题目作介绍。
莎士比亚文集词频统计并行化算法
环境描述: 本题目需要运行在 Apache Spark 1.0.1 环境下,使用 Java 或者 Scala 进行编程开发。
题目描述: 在给定的莎士比亚文集上(多个文件) ,根据规定的停词表,统计 出现频度最高的 100 个单词。
数据集: shakespear 文集, 具体下载地址见大赛网站 http://cloud.seu.edu.cn。
停词表: stopword.txt, 具体下载地址见大赛网站 http://cloud.seu.edu.cn。