最近想学习Spark。这样就开始Spark的旅程。在本地搭建一个Spark开发环境,Spark本身是使用Scala语言编写的,当然也可以使用java来开发Spark项目,但使用Scala语言来开发更加简洁,本文在IDEA开发工具中使用sbt来创建Scala工程
1:安装Java SDK,Scala,Hadoop及IDEA 集成开发环境
JDK下载地址: http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
Scala下载地址:https://www.scala-lang.org/download/all.html
Hadoop下载地址:http://hadoop.apache.org/releases.html
Intellij IDEA下载地址: https://www.jetbrains.com/idea/download/#section=windows
以下是我自己环境版本:
IDEA使用的是Ultimate版本 如果不想购买可以使用Community版本
2:Hadoop的安装与配置
下载Hadoop:http://hadoop.apache.org/releases.html,选择相应的版本,这里选择了3.0.3,并解压缩到制定的目录,添加环境变量:
HADOOP_HOME: D:\hodoop-3.0.3
并添加以下路径到Path变量中: %HADOOP_HOME%\bin
在Windows上运行Hadoop需要使用winutils.exe修改文件权限
下载winuitls: https://github.com/steveloughran/winutils
下载对应版本的bin目录直接替换本地bin目录即可
3:Spark的安装
下载Spark: https://spark.apache.org/downloads.html,选择相应的版本,这里选择了2.3.1版本 spark-2.3.1-bin-hadoop2.7,并解压缩到制定的目录,添加环境变量:
SPARK_HOME: D:\spark
并添加以下路径到Path变量中:%SPARK_HOME%\bin
这样可以在命令行中启动命令:spark-shell
4:Scala插件的安装
在IDEA Settings中选择 Plugins,搜索scala,点击安装:
5:使用sbt来创建Scala工程
File -> new -> Project -> Scala -> sbt
点击Next 输入项目名称及选择sbt,scala版本
6:添加对spark的支持,用spark做一个测试文件单词统计
1. 修改build.sbt
我本地不知道为啥选择scala2.12.6版本不能执行。后来改成了2.11.8就可以了。这里留一个疑惑下次解决
添加以下命令到build.sbt
libraryDependencies += "org.apache.spark" %% "spark-core" % "2.3.1"
修改scalaVersion 为 “2.11.8”
2. 在d盘新建一个名为testspark.txt的文件
添加以下内容
Hello World
Hello
3. 新建一个名字叫WordCount 的scala object类
import org.apache.spark.SparkContext import org.apache.spark.SparkConf import org.apache.log4j.{Level,Logger} object WordCount { def main(args: Array[String]) { //屏蔽日志 Logger.getLogger("org.apache.spark").setLevel(Level.WARN) Logger.getLogger("org.eclipse.jetty.server").setLevel(Level.OFF) val inputFile = "D://testspark.txt" val conf = new SparkConf().setAppName("WordCount").setMaster("local[2]") val sc = new SparkContext(conf) val textFile = sc.textFile(inputFile) val wordCount = textFile.flatMap(line => line.split(" ")).map(word => (word, 1)).reduceByKey((a, b) => a + b) wordCount.foreach(println) } }
4. 鼠标右键运行WordCount 得到以下结果
由于我本地另外一个spark任务监听了4040接口。这里就新建了一个4041接口。
到这里spark 环境就完全搭建好了。Spark 更多知识还需要我们继续的学习和练习。