欢迎转载,转载请注明出处,徽沪一郎。java
原本源码编译没有什么可说的,对于java项目来讲,只要会点maven或ant的简单命令,依葫芦画瓢,一会儿就ok了。但到了Spark上面,事情彷佛不这么简单,按照spark officical document上的来作,总会出现这样或那样的编译错误,让人懊恼不已。linux
今天闲来无事,又重试了一把,竟然o了,作个记录,以备后用。git
个人编译机器上安装的Linux是archlinux,并安装后以下软件github
第一步固然是将github上的源码下载下来apache
git clone https://github.com/apache/spark.git
不是直接用maven也不是直接用sbt,而是使用spark中自带的编译脚本make-distribution.shbash
export SCALA_HOME=/usr/share/scala cd $SPARK_HOME ./make-distribution.sh
若是一切顺利,会在$SPARK_HOME/assembly/target/scala-2.10目录下生成目标文件,好比dom
assembly/target/scala-2.10/spark-assembly-1.0.0-SNAPSHOT-hadoop1.0.4.jar
以前使用sbt编译一直会失败的主要缘由就在于有些jar文件由于GFW的缘由而访问不了。解决之道固然是添加代理才行。maven
代理的添加有下面几种方式,具体哪一种好用,一一尝试吧,对于最新的spark。使用以下指令便可。oop
export http_proxy=http://proxy-server:port
方法二,设置JAVA_OPTS测试
JAVA_OPTS="-Dhttp.proxyServer=proxy-server -Dhttp.proxyPort=portNumber"
既然可以顺利的编译出jar文件,那么确定也改动两行代码来试试效果,若是知道本身的发动生效没有呢,运行测试用例是最好的办法了。
假设已经修改了$SPARK_HOME/core下的某些源码,从新编译的话,使用以下指令
export SCALA_HOME=/usr/share/scala mvn package -DskipTests
假设当前在$SPARK_HOME/core目录下,想要运行一下RandomSamplerSuite这个测试用例集合,使用如下指令便可。
export SPARK_LOCAL_IP=127.0.0.1 export SPARK_MASTER_IP=127.0.0.1 mvn -Dsuites=org.apache.spark.util.random.RandomSamplerSuite test