这部分内容详细描述了如何在IDEA中构建Spark应用程序,并通过关联Spark源码,为Spark应用程序的调试工作做准备。
一、准备工作
当前安装的IntelliJ IDEA版本为14.0.1,低版本可能操作上会有些差异。IDEA需要安装的插件,可以通过以下步骤来查看或安装。
1.从File菜单进入Plugins设置界面
单击File菜单下的Settings…命令,进入IDEA配置界面,如图2.30所示。
图2.30 IntelliJ IDEA的Settings菜单
第一次打开IDEA或在File菜单下单击Close Project打开IDEA时,在出现的界面上可以打开配置页面。如图2.31所示。
在这里单击下拉框后可以直接看到Plugins,打开就可以进入插件管理界面,Configure界面如图2.32所示。
图2.31 IntelliJ IDEA的Configure入口界面
图2.32 IntelliJ IDEA的 Plugins配置选项
2.安装插件
在IDEA的配置界面,即Settings界面上可以浏览已经安装的插件,以及查找插件仓库中的其他插件并安装,查找插件仓库中的插件过程如图2.33所示。
图2.33 IntelliJ IDEA的Plugins配置界面
在Plugins界面中,可以看到已经安装的插件列表,这里查看是否已经安装了SBT、SBT Executor和Scala插件,如果还没有安装,单击Browse repositories按钮,可以浏览插件仓库,然后选择要安装的插件,并在界面右边单击install按钮即可。
二、构建Spark应用程序
构建Spark应用程序的详细步骤如下:
1.创建Project
在File菜单下单击New Project…命令,创建一个新的Project。创建一个Project的过程如图2.34所示。
图2.34 IntelliJ IDEA的创建新Project界面
2.选择Scala、SBT
Project构建设置的过程如图2.35所示。
图2.35 IntelliJ IDEA的创建Project界面
选择Scala、SBT后,单击OK按钮继续。
3.设置Project名字,目录位置,以及选择JDK的版本信息
Project的具体配置信息,包含名字、目录位置等的具体配置如图2.36所示。
图2.36 IntelliJ IDEA创建Project的配置界面
创建Project之前,先在本地安装JDK(也可以后续在File菜单下的Setting…中进行设置)。此处,单击Finish按钮继续。
4.创建默认的目录结构
创建成功后,在Project中右键打开上下文菜单,在菜单中选择Mark Directory As命令,再选择Generated Sources Root命令,便自动构建了整个Project的目录结构,自动构建整个目录结构的操作流程如图2.37所示。
图2.37 IntelliJ IDEA的自动构建整个Project的目录结构菜单
创建过程中会进行编译,编译后的目录结构如图2.38所示。
图2.38 IntelliJ IDEA的SBT构建文件
IDEA已经构建了src、src下的main等各个子目录,同时包含了构建时生成的target目录,在这里可以看到,当前IDEA使用的Scala版本为2.11.4。
5.修改依赖的Scala版本
由于当前Spark 1.3是基于Scala 2.10.4版本构建的,考虑到Scala的二进制兼容性,构建的应用程序也需要保持Scala版本一致性,所以需要修改版本。
打开build.sbt文件,修改ScalaVersion为“2.10.4”,版本修改的文件内容如图2.39所示。
6.执行SBT Commands下的Compile命令
在安装SBT相关的两个插件后,菜单中会出现SBT Commands,新增的菜单及其具体子菜单如图2.40所示。
图2.39 IntelliJ IDEA的修改构建的Scala版本
图2.40 IntelliJ IDEA插件的SBT命令
SBT Commands包含以下几种命令:
1)compile:编译Project。
2)clean:清理编译结果。
3)gen-idea:可以在Windows 7下使用,用于构建IDEA所需的工程信息。
运行这些命令后,可以在SBT Execute Output窗口查看具体过程,运行compile子菜单时的界面信息如图2.41所示。
图2.41 IntelliJ IDEA中sbt compile执行过程
当出现图2.42中的界面信息时,执行成功。
由于之前修改了Scala的版本,对应构建后的target目录中会生成新的Scala版本对应的目录,结构如图2.43所示。
在target目录中编译的结果已经放到了scala-2.10目录。
7.在src/main/scala下创建Scala Object
构建Scala Object,在scala目录上单击右键,依次选择New→Scala Class命令,步骤如图2.44所示。(www.xing528.com)
图2.42 IntelliJ IDEA中sbt compile执行结果
图2.43 IntelliJ IDEA中修改Scala版本并重新编译后的目录结构
图2.44 IntelliJ IDEA中添加Scala类
在弹出窗口中,单击下拉页表框Kind,选择Object,如图2.45所示。
图2.45 IntelliJ IDEA中添加 Scala类的类型选择
构建后,如图2.46所示,其中HellpSparkMaster位于test的package下:
在Scala中,package的名字和目录不需要像Java那样,必须一致。但为了方便查看,建议使用像Java那样,保持两者的一致性,这里可以在scala目录上单击右键,然后构建一个test的package,然后将Scala Object移到该package下。
图2.46 IntelliJ IDEA中添加Scala类代码
8.开始对应用程序进行打包:构建jar包
有两种方式可以使用,一种是在IDEA界面上使用Terminal窗口,在窗口中使用sbt package进行打包。如图2.47所示。
图2.47 IntelliJ IDEA的sbt package过程
Terminal打开方式如图2.48所示,单击左下角箭头所指部分,选择Terminal。
图2.48 IntelliJ IDEA的Terminal界面
这种方式构建的jar包和章节2.4.1基于SBT构建Spark应用程序的实例一样。
9.添加依赖的jar包
虽然已经有了sbt构建文件,但IDEA不能识别Spark的类,在代码编辑窗口中还是有错误提示信息。可以手动将依赖的jar包添加进去,方法如下:
1)打开Project Structure。即选择File菜单下的Project Structure…命令,打开步骤如图2.49所示。
2)在Libraries中添加依赖的jar包。选中Libraries命令,单击“+”按钮,选择Scala SDK命令,具体步骤如图2.50所示。
图2.49 IntelliJ IDEA的Project Structure菜单
图2.50 IntelliJ IDEA中添加Scala SDK类库
3)在弹出窗口中选择Scala的2.10.4版本,版本选择界面如图2.51所示。
4)单击OK按钮,在弹出的窗口中选择当前的Module,单击OK按钮,然后继续。
图2.51 IntelliJ IDEA中选择Scala SDK类库版本
5)继续单击“+”按钮,选择Java命令,添加Spark的编译后的jar包,添加依赖jar包界面如图2.52所示。
图2.52 IntelliJ IDEA中选择Java第三方类库
6)在Spark安装路径下添加所需的依赖jar包,如图2.53所示。
图2.53 IntelliJ IDEA中选择Spark依赖类库
7)这里选择最新的Spark1.3版本编译后的Spark-assembly-1.3.0-hadoop2.4.0.jar包。
8)单击OK按钮,在弹出的窗口中选择当前的Module,单击OK按钮,完成依赖jar包的添加。
10.通过IDEA的Artifacts构建jar包
1)打开Project Structure。即选择File菜单下的Project Structure…命令,在Project Struc-ture窗口中选择Artifacts命令,Artifacts配置如图2.54所示。
图2.54 IntelliJ IDEA中Artifacts配置界面
2)单击“+”按钮,构建jar包,在窗口中填写相关信息,构建jar包的选择类型如图2.55中箭头所示。
图2.55 IntelliJ IDEA中Artifacts配置
3)弹出窗口中选择Module,当前Module的选择如图2.56中箭头所示。
图2.56 IntelliJ IDEA中Artifacts的Module配置
4)将集群中已经部署的jar包去除。即选中jar包,单击“-”按钮,去除这部分依赖jar包,具体操作如图2.57所示。
图2.57 IntelliJ IDEA中Artifacts的配置
5)在Artifacts的配置界面中可以设置构建jar包的输出路径,可以在构建的jar包中去除依赖的jar包。单击OK按钮,继续在IDEA主菜单中选择Build下的Build Artifacts…命令,操作步骤如图2.58所示。
图2.58 IntelliJ IDEA中Artifacts的构建菜单
6)构建后到输出路径上查看是否已经生成jar包,本例生成的结果文件如图2.59所示。
图2-59 IntelliJ IDEA中Artifacts的build输出结果
到这一步,构建过程就完成了。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。