开源数据处理框架Spark - 从入门到放弃
本节开始搭建我们的Spark开发环境了,编写一些简单的函数,打包成jar文件,然后放入到Spark环境中运行。根据上节的情况,接下来的内容力求更通俗易懂,至少看起不那么晦涩。本篇主要是安装步骤,不涉及原理讲解,但是开源项目的安装部署往往也是难点。
在此之前,先闲扯一点题外话。这次的标题是入门到放弃,也是很多初学编程,或者想学习开源项目的同学所遇到的问题。刚开始很好奇并且信心满满,可是越往后越发现过程很枯燥,逐渐丧失兴趣直到放弃。也有的说学这些没啥用,没有切实的工作使用背景。
不管是学习编程还是其他任何事,思路和方法决定你是否能更快更好的完成预期的目标。不止是编程领域,我觉得任何一门技术的意义,应该都只是一块敲门砖,它能够暂时让你获得一些好处,但不能成为一生追求的目标。当然准备终生投身革命一线斗争的的道友就······别过。
这里学习Spark只需要:基本的高级编程语言基础。你需要了解啥是变量,对象,方法,如何调用,以及较高级的多线程,IO,Socket等,这个应该是一门语言最基本的东西了。至于更高级的操作系统,网络,协议,框架等,暂可忽略。编程使用的是高级语言,不直接与计算机硬件打交道,也就是说和计算机系统是隔离的,知不知道啥计算机原理、JVM虚拟机底层编译原理影响不大。其次,框架是对底层语言的封装,操作的的是更高级的API接口,其目的就是隐藏内部实现,方便使用。scala也是对java的二次提炼和优化,让代码变得更加简洁高效了。所以,知道如何编写一个HelloWorld,并大概了解是怎么运行的就够了。这里指的是先入门,并非不重要,允许知识盲点。我们无法决定起点,但可以决定终点。
一个健康的学习路径,应该是由事物发展和认识事物的规律决定,再合理地规划学习步骤。正如上节中提到的,在Spark学习中:由初步认识–简单使用–窥探细节
1,先通过各方面了解Spark概念
2,搭建本地运行环境
3,搭建本地开发环境
4,了解程序编码流程
5,学习scala基本语法和高级用法
6,编写程序并植入到本地环境运行
7,最后了解其内部实现机制(也分成度)
当然,越往后会难度越大,但是也是成梯度逐渐增加的。
对于Spark而言,还有另一个要求就是能看懂基本的数学公式,对数据统计和概率论有了解更好。后面也将学习简单的数据挖掘、机器学习等相关算法的实践。同理,这些算法也不需要自己去推演或者编写,*已经有人造好了,可以直接拿来用。那么,现在的目标很明确了:学会怎么样使用*了,然后再去了解是咋造*的。
扯淡环节完毕,让我们进入到Spark开发环境搭建吧!
一 安装IDEA
Spark大部分用scala语言编写,scala用IDEA编辑,所以第一步先安装编辑器。
IDEA下载:https://www.jetbrains.com/idea/download/#section=windows
这里下载的是社区版,安装过程一路next直到完成。
二,安装scala插件
使用IDEA线上安装插件下载速度有点捉急,而且下载完安装不一定成功。这里我们手动下载插件
插件地址:https://plugins.jetbrains.com/plugin/1347-scala
注意此处的scala插件的版本要与我们之前下载的IDEA版本一致,那么如何查看呢?
下载完插件后,进入IDEA 依次点击:左上方 file—Settings—Plugins—Install Plugins from disk 选择插件下载的目录点击OK
三 第一个scala helloword
依次点击 file—project—Scala—IDEA—Next如图
依次编辑第1行:工程名
第2行:工程存放目录
第3行:JDK版本
第4行:Scala SDK版本
然后Finish
右键 项目src—New—Package,然后在新建的包上右键 New—Scala Class —命名类名—选择Object
在类中ctrl+J自动生成主函数和打印函数
到这里,我们已经成功编辑了第一个程序,接下来将导入Spark源码,让开发环境跑起来,并编写一个简单的函数。
四 构建scala maven项目
file—New—project—maven
如上图选择,点击next,命名maven工程
一直点击next直到maven自动构建完成,项目结构如下图所示
此时注意pom.xml文件中scala的版本要与IDEA的SDK版本一致
每次修改完pom.xml的配置,重新更新依赖,如下图所示
这里,我们将不用的依赖干掉,如log4j
引入SDK
五 导入Spark和相关组件源码
IDEA自带maven插件,点击file—Settings
在pom.xml里面引入Spark及相关组件的依赖,这里注意各个组件的版本
<dependencies>
<dependency>
<groupId>org.scala-lang</groupId>
<artifactId>scala-library</artifactId>
<version>${scala.version}</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.4</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.specs</groupId>
<artifactId>specs</artifactId>
<version>1.2.5</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.1.3</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.5</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
<version>2.7.3</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
<version>2.7.1</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-hdfs</artifactId>
<version>2.7.3</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.11</artifactId>
<version>2.2.0</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-sql_2.11</artifactId>
<version>2.2.0</version>
<type>jar</type>
</dependency>
</dependencies>
导入相关依赖的包,下载的速度与网速有很大关系,可能等待时间很长,如果失败,重复更新下载
接下来,可以在src/main/app文件编写主函数了
def main(args: Array[String]): Unit = {
println("Hello World!")
val sparkConf = new SparkConf().setMaster("local").setAppName("test")
val sparkContext = new SparkContext(sparkConf)
}
右键点击run执行函数
控制台执行结果
执行结果不报错表示我们的开发环境部署成功,可能在具体的执行中会有不同的错误,仔细回顾每一步,是否哪个步骤没做对。本篇力求着手细节,即使初次使用IDEA,maven,不知道如何安装插件也好,通过此教程都能成功完成。
从下节起,将开始进入正轨的scala语言学习了。先熟悉基本用法,对比它与java语法的区别,了解其特有的函数编程的思想。好了,衡山后学祝小芸有礼,我们下期再见!