官網下載源碼到本地後,須要先進行編譯,參考官方文檔,編譯很簡單,這裏使用4個線程,跳過tests,以此加速編譯。這個編譯會產生一些必要的源代碼,如Catalyst項目下的,因此是必要的一步:html
cd ~/workspace/spark-2.2.0 build/mvn -T 4 -DskipTests clean package # 編譯完成後,測試一下 ./bin/spark-shell
這裏須要下載不少依賴包,會花一些時間java
打開IDEA,Import from Project -> 選擇spark源代碼目錄 -> Import from project from external model 並勾選Maven,一路next就導入成功git
Error:(45, 66) not found: type SparkFlumeProtocol val transactionTimeout: Int, val backOffInterval: Int) extends SparkFlumeProtocol with Logging { ^ Error:(70, 39) not found: type EventBatch override def getEventBatch(n: Int): EventBatch = {
這個問題是因爲flume-sink所需的部分源文件idea不會自動下載,全部編譯時不能經過。github
解決方式:shell
在intellij ieda裏面:
- 打開View -> Tool Windows -> Maven Projects
- 右擊Spark Project External Flume Sink
- 點擊Generate Sources and Update Folders
隨後,Intellij IDEA會自動下載Flume Sink相關的包apache
而後從新build -> Make Project,一切ok!!bash
This should generate source code from sparkflume.avdl.
Generate Sources and Update Folders do can resolve type SparkFlumeProtocol not found issue.
來源: http://apache-spark-developers-list.1001551.n3.nabble.com/A-Spark-Compilation-Question-td8402.htmlmaven
再次運行,此次會花費比較長的時間,由於已經能夠成功編譯LogQuery
啦,可是仍是沒能運行成功,報錯以下: 不要慌,這說明你的代碼編譯已經成功啦,運行出錯的緣由是,運行Spark App通常都是經過spark-submit
命令,把你的jar運行到已經安裝的Spark環境裏,也就是全部的Spark依賴都已經有啦,如今你用IDE的方式,就會缺乏依賴。ide
解決方案以下:測試
Menu -> File -> Project Structure -> Modules -> spark-examples_2.11 -> Dependencies 添加依賴 jars -> {spark dir}/spark/assembly/target/scala-2.11/jars/
在VM options裏添加以下參數:
-Dspark.master=local
而後再run,代碼成功運行