一)准备源代码
下载代码(使用git)
git clone https://github.com/apache/spark.git
切换合适的branch版本(2.1.0)
➜ spark git:(master) git tag 查看分支列表
➜ spark git:(master) git checkout v2.1.0 切版本
➜ spark git:(267aca5bd5) git checkout -b pin-tag-210 创建新版本
二) 编译
设置环境变量JAVA_HOME
export JAVAHOME=/Library/Java/JavaVirtualMachines/jdk1.8.0131.jdk/Contents/Home
若没有配置JAVA_HOME,Maven会报错:Unsupported major.minor version 51.0
手动下载依赖工具
使用./build/mvn 工具进行编译,会自动下载scala、Maven和zinc。鉴于网速,该过程可能会很慢,我们可以通过手动下载这三个工具来加快整个安装过程。
得到工具下载地址
为了得到工具的下载地址,我们先执行一遍编译操作,使用四线程,跳过Test编译 ➜ spark git:(pin-tag-211) ./build/mvn -T 4 -DskipTests clean package 控制台上会显示下载地址,如下:
https://downloads.typesafe.com/zinc/0.3.9/zinc-0.3.9.tgz
https://downloads.typesafe.com/scala/2.11.8/scala-2.11.8.tgz
https://www.apache.org/dyn/closer.lua?action=download&filename=/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz
鉴于网速,本次下载很大的可能性会失败。
手动下载
按照下载过程中显示的地址,或者到官网直接下载相应版本,手动下载相应工具,将文件保存在 build目录中。
配置国内Maven源
配置国内Maven仓库,可以加快编译时依赖文件的下载速度,这里使用阿里云的源。 修改maven的配置文件setting.xml文件(spark/build/apache-maven-3.3.9/conf/setting.xml),内容如下:
alimaven
aliyun maven
http://maven.aliyun.com/nexus/content/groups/public/
central
正式编译
使用四线程,跳过Test编译
➜ spark git:(pin-tag-211) ./build/mvn -T 4 -DskipTests clean package
经过漫长的编译,完成。
说明:第一次编译需要下载很多Maven依赖包会很慢。
查看编译效果
运行spark shell客户端
./bin/spark-shell
运行自带样例(求pi)
➜ spark git:(pin-tag-210) ✗ spark-submit –class org.apache.spark.examples.SparkPi
–master local
./examples/target/original-spark-examples_2.11-2.1.0.jar 10
三)导入Intellij IDEA
导入工程
我们直接使用maven的pom文件来导入工程:
Menu -> File -> Open -> {spark dir}/pom.xml -> Open as Project
配置Maven
Intellij IDEA自带的有Maven,我们要将Maven切换成项目build时下载的Maven,将Maven配置成spark build时下载的Maven。
Preferences -> Build,Execution,Deployment -> Build Tools -> Maven -> Maven home directory
说明:否则会出现“maven cant resolve symbol”错误。
配置Scala SDK
添加Scala SDK
Menu -> File -> Project Structure ->Libraries
说明否则报错:
四) 在IDE中运行样例
配置依赖jar包
一般都是通过spark-submit工具来提交应用,该工具会添加运行依赖的spark jar包(前面编译阶段生成的jar包)。如果想在IDE中直接运行,则需要配置相关的jar包。具体如下:
Menu -> File -> Project Structure -> Modules -> spark-examples_2.11 -> Dependencies
添加依赖jars :
{spark dir}/spark/assembly/target/scala-2.11/jars/
打开样例代码(可选)
在{spark dir}/examples/目录下,这里以LogQuery为例.
command + o -> 输入LogQuery打开
配置运行参数:
配置spark运行模式为local
Menu -> Run -> Edit Configurations -> 选择 + -> Application
运行结果:
五)调试
单步执行
和普通的程序调试类似,设置断点后单步执行:
监控
使用jvisualvm来查看调用栈等信息:
➜ spark git:(tag-210) ✗ spark-shell
➜ ~ jvisualvm
效果如图:
参考资料:
https://github.com/linbojin/spark-notes/blob/master/ide-setup.md(主要)
https://www.zhihu.com/question/24869894/answer/97339151 (连城)
http://spark.apache.org/docs/latest/building-spark.html
http://spark.apache.org/developer-tools.html