CDH5 Apache Spark初体验
来源:互联网 发布:ssh连接linux 编辑:程序博客网 时间:2024/05/22 14:49
Apache Spark是一个通用的分布式计算框架,为大规模数据处理提供了一个高效、可扩展的计算引擎。由于性能、接口、功能的那个多种原因,Spark正处于“风头浪尖”,热度也超过了MapReduce。在这片博文中,你将学习到如何在CDH5上使用Maven编译、运行一个Spark应用程序。
预备知识:Scala + Maven
完整的代码可以从github地址 https://github.com/yeleid/sparkwordcount 下载。注意,示例的代码是基于CDH5.1.0的版本编写的,如果使用其他的CDH5版本,请到http://www.cloudera.com/content/cloudera/en/documentation/core/latest/topics/cdh_vd_cdh5_maven_repo.html查询具体的依赖包信息。
既然是第一个Apache Spark程序,自然我们从经典的“Word Count”入手。该程序主要的功能是统计文档集合中每个单词出现的频率:
1. 读取文档集合;
2. 计算每个单词的频率;
3. 给定词的前缀,打印所有匹配的单词及其频率
完整的Scala代码如下:
需要特别注意的是:Spark是惰性计算的 (Lazy Evaluation)。也就是说,只有当特定的操作执行时,Spark任务才会真正运行起来。在“Word Count”代码片段中,collect函数就属于这类“特定的操作”。该函数会将任务执行获得的结果返回给客户端(Spark Driver)。另外比较常用的“特定的操作”还有saveAsTextFile将计算结果写入文件系统,比如HDFS。
另一个需要注意的是 (针对熟悉MapReduce程序员),Spark对reduce的定义是不同于MapReduce的。对于MapReduce, 它的reduce函数可以任意处理具有相同主键(Key)的数据;然后,对于Spark,在reduce函数中的计算逻辑必须符合“结合律”的要求。刚接触的同志们不要慌张,慢慢意会即可。严格意义上来讲,Spark的groupBy函数+map函数 (用于处理groupBy的结构) 与MapReduce的reduce函数更加相似。
让我们转战“编译”。Maven要求项目遵循特定的目录结构,例如所有Scala代码必须放在目录src/main/scala下。另外,它还要求使用项目根目录下的pom.xml来说明编译的配置信息。
为了让Maven能够编译Scala代码,需要指定特定的插件:
为了让Maven可以下载到以上插件,需要指定插件所在仓库的位置:
最后自然还需要添加Scala与Spark的依赖库信息:
万事具备,只差编译打包,使用命令“mvn clean package”编译打包后,会在target目录下面生成wordcountspark-0.0.1.jar。
在运行程序前,需要将准备数据上传到HDFS中 (如果只是本地测试,数据也可以保存在本地),先来看看测试数据来对结果有个预估:
使用"spark-submit"提交Spark应用程序。在以下示例中,Spark应用程序只是运行在本地进程中,也就是我们之前提到的“本地测试环境”。通过指定不同的master参数,程序可以被运行在不同的执行器上。如果你使用了项目的样本数据,运行结果应该与下图相似:
恭喜你,你刚刚已经成功了你的第一个Apache Spark应用程序。万事入门难,大家再接再厉,Happy Spark :-)
0 0
- CDH5 Apache Spark初体验
- 3 分钟快速体验 Apache Spark SQL
- spark-shell初体验
- spark streaming初体验
- spark初体验
- spark-sql初体验
- Apache FtpSever 初体验
- apache hadoop初体验
- linux-apache初体验
- Spark笔记(1)-Spark初体验
- CDH5.x 使用Spark-sql
- spark初体验之wordCount
- Apache Solr初体验一
- Apache Solr初体验二
- Apache Solr初体验三
- Apache Solr初体验四
- apache ActiveMQ之初体验
- CDH5 Hue Spark报错完美解决方案
- 【LabVIEW信号处理】加速度信号到速度信号(1)
- 第五周项目2对象作为数组成员
- Selenium WebDriver – Common Used API
- Java基础第二十天--多线程1
- 使用C++和OpenCV读取MNIST文件
- CDH5 Apache Spark初体验
- 2015-第五周-体验常成员函数
- Java Socket编程
- C程序的编译过程
- TAR,GZIP, BZIP2, XZ tar.xz zip 7z汇总
- 第三周项目三 三角形多文件处理
- 专家评说SQL Server 2014:技术资料精选
- 将指定SQL_ID 的执行计划 flush出shared pool
- Jmeter – CSV Data