歡迎轉載,轉載請註明出處,徽滬一郎。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