为了方便应用程序开发与测试,提高开发效率,一般使用集成开发工具IDE。同样,为了方便Spark应用程序编写和测试,可以选择集成开发工具Intellij IDEA或Eclipse。由于Intellij IDEA对Scala更好的支持,大多Spark开发团队选择了Intellij IDEA作为开发环境。
在Linux下安装配置JDK8,请参见http://blog.csdn.net/chengyuqiang/article/details/77671748。
在实际生产环境下,首先是在Windows平台进行应用程序编写和调试,然后,程序编译后发布到服务器端运行。所以,这里需要介绍的是Windows平台下JDK8的安装与配置。
(1)下载
登录Oracle官网http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html,接受协议,选择对应版本。因为我的本机是64位Windows,所以需要下载64位(Windows x64)JDK安装包。
(2)安装JDK
Windows下安装JDK非常方便,双击安装程序后,直接单击下一步即可,默认安装到C:\Program Files\Java目录下。其间会安装JRE,默认一下步即可。
(3)设置环境变量
右键单击桌面上的“计算机”图标(在Windows10下是“此电脑”),在弹出的右键快捷菜单中选择最后一个“属性”选项;在弹出的系统窗口中,单击左侧“高级系统设置”选项,弹出“系统属性”对话框,如下图。
然后单击中间的“高级”选项卡,再单击下方的“环境变量(N)…”按钮。在弹出的环境变量对话框中,首先单击下方的“新建(W)…”按钮,然后在弹出的新建环境变量中输入对应的值。
(1)下载
通过Spark官网下载页面http://spark.apache.org/downloads.html 可知“Note: Starting version 2.0, Spark is built with Scala 2.11 by default.”,建议下载Spark2.2对应的 Scala 2.11。
登录Scala官网http://www.scala-lang.org/,单击download按钮,然后再“Other Releases”标题下找到“Last 2.11.x maintenance release - Scala 2.11.11”链接
进入http://www.scala-lang.org/download/2.11.11.html页面,下拉找到如下图内容,下载msi格式的安装包即可。
(2)安装
默认安装到C:\Program Files (x86)\scala目录下
(3)环境变量
与设置Java环境变量类型,
SCALA_HOME=C:\Program Files (x86)\scala
Path环境变量在最后追加;%SCALA_HOME%\bin
Maven的安装与配置请参考:
http://blog.csdn.net/chengyuqiang/article/details/72082149
(1)下载与安装
登录官网https://www.jetbrains.com/idea/download/,按照自己的需求下载(ultimate,旗舰版)或者(Community,社区版)。比如这里直接下载ultimate
下载得到ideaIU-2017.2.3.exe可执行文件,双击即可安装。
(2)启动
安装完成后,单击周末IntelliJ IDEA图标即可启动IntelliJ IDEA.
(3)导入设置
由于是第一次安装,所以不需要导入配置。默认选项即可。
(4)接受协议
(5)激活IntelliJ IDEA 2017.2.3(重要)
对于旗舰版的IntelliJ IDEA需要激活。如下图所示,首先选中“License server”,然后再输入框中输入http://idea.imsxm.com(注意,输入是这个地址,不是图中地址),最后单击“Activate”按钮激活即可。
(6)选中风格
为了保护眼睛,我倾向于选中Darcula风格。
(7)单击“Next:Default plugins”–>Featured plugins,单击“Install”下载Scala插件
选中scala–>右键快捷菜单–>Mark Directory as –>Sources root
File–>Project Structure–>Global Libaries
单击“Browse”按钮,选中Scala安装目录
(1)pom.xml
Spark2.2 Maven库请参见 http://mvnrepository.com/artifact/org.apache.spark/spark-core_2.10/2.2.0
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0modelVersion>
<groupId>cn.hadrongroupId>
<artifactId>simpleSparkartifactId>
<packaging>jarpackaging>
<version>1.0-SNAPSHOTversion>
<properties>
<spark.version>2.2.0spark.version>
properties>
<repositories>
<repository>
<id>nexus-aliyunid>
<name>Nexus aliyunname>
<url>http://maven.aliyun.com/nexus/content/groups/publicurl>
repository>
repositories>
<dependencies>
<dependency>
<groupId>org.apache.sparkgroupId>
<artifactId>spark-core_2.10artifactId>
<version>${spark.version}version>
dependency>
dependencies>
<build>
<plugins>
<plugin>
<artifactId>maven-assembly-pluginartifactId>
<version>2.3version>
<configuration>
<classifier>distclassifier>
<appendAssemblyId>trueappendAssemblyId>
<descriptorRefs>
<descriptor>jar-with-dependenciesdescriptor>
descriptorRefs>
configuration>
<executions>
<execution>
<id>make-assemblyid>
<phase>packagephase>
<goals>
<goal>singlegoal>
goals>
execution>
executions>
plugin>
plugins>
build>
project>
保存pom.xml文件后,如果Intellij IDEA右下角出现如下提示,请单击“Enable Auto-Import”
(2)WordCount.scala
新建Scala Class类WordCount.scala,Scala源文件后缀名是.scala。
package cn.hadron
import org.apache.spark._
object WordCount {
def main(args: Array[String]) {
var masterUrl = "local[1]"
var inputPath = "D:\\data\\Hamlet.txt"
var outputPath = "D:\\output"
if (args.length == 1) {
masterUrl = args(0)
} else if (args.length == 3) {
masterUrl = args(0)
inputPath = args(1)
outputPath = args(2)
}
println(s"masterUrl:${masterUrl}, inputPath: ${inputPath}, outputPath: ${outputPath}")
val sparkConf = new SparkConf().setMaster(masterUrl).setAppName("WordCount")
val sc = new SparkContext(sparkConf)
val rowRdd = sc.textFile(inputPath)
val resultRdd = rowRdd.flatMap(line => line.split("\\s+"))
.map(word => (word, 1)).reduceByKey(_ + _)
resultRdd.saveAsTextFile(outputPath)
}
}
从网络上下载一部文本格式的小说,比如Hamlet.txt,存放到D:\data目录。
在源文件代码中右键单击–>Run “WordCount”