1. 程式人生 > >在eclipse中修改spark2.1原始碼

在eclipse中修改spark2.1原始碼

1.安裝Scala
2.安裝sbt
3.安裝scala IDE http://scala-ide.org/download/current.html (要注意eclipse和Scala IDE的版本匹配問題,網頁上有說明)
4.下載Spark原始碼: Git clone git://github.com/apache/spark.git
http://spark.apache.org/downloads.html
5.啟動sbt:
windows下:cmd——cd $spark——sbt

Linux下:cd $spark——sbt/stb

6.生成eclipse工程檔案: 在sbt提示符下輸入eclipse
7.用eclipse匯入生成的工程檔案,並加入lib_managed目錄下的jar包
第一步 下載原始碼

新建資料夾,命名spark—》右鍵SVN—》export spark有70M的樣子
第二步 eclipse匯入spark原始碼

1、開啟eclipse,選擇File——New——Project——Java Project。輸入專案工程名spark,Contents中選擇 “Create project from existiing source”,然後把spark檔案所在的資料夾加進去。點選“finish”,完成。

2、匯入新建工程完成後,在apple、linux、battleships出現了錯誤,網上找出說“完成Spark工程後,會產生編譯錯誤,刪除有錯誤的資料夾”,試了不行,刪除了一個包就沒有再出現錯誤,但是工程圖示那裡還有一個錯誤的標誌,編譯能完成但跑不起來,在網上沒再找到別的方法解決,於是選擇把出錯的檔案刪除,編譯完成。

步驟:

1、點選Window——Show View——Ant;

2、右擊Ant面板,選擇Add Buildfiles;

3、展開Spark——build資料夾,選擇build.xml,點選”OK”;

4、在Ant面板,展開Spark,雙擊”release[default]”;

5、等一段時間,會提示”Build Successful”。

6、生成target資料夾,重新編譯時,要手工刪除此資料夾。

注意:如果沒有顯示“Build Successful”,則再次雙擊“release[default]”.

3、執行設定

1、點選Run——Run Configurations

2、 點選“Main”
Name填寫:spark

Main class:org.jivesoftware.launcher.Startup(啟動類)
勾選Stop in main
3、點選Classpath標籤頁
選擇User Entries ,使得Advanced..按鈕變的可用.點選Advanced按鈕.在彈出來的Advanced Options視窗,選擇Add Folders,再點OK,在Folder Selection視窗選擇spark::src::resources 資料夾,點選OK。
選擇Common標籤頁,勾選Debug,Run前面的框。點選Apply,再點選Close。

解決方案二:
Eclipse下開發除錯環境的配置該小節中使用的各項工具分別為:Windows10+EclipseJavaEE4.4.2+Scala2.10.4+Sbt0.13.8+Maven3.3.3,測試的Spark版本為2.1.0。
1.配置IDE:選擇選單項Help->Installnewsoftware,新增站點http://download.scala-ide.org/sdk/lithium/e44/scala211/stable/site,選擇安裝ScalaIDEforEclipse以及ScalaIDEPlugins。對於標準版Eclipse,還需要安裝單獨的Maven外掛。出於配置簡便考慮,也可以使用Scala官方提供的已將所有依賴打包好的ScalaIDE。特別的,由於專案本身存在一些錯誤,請先暫時關閉Project->BuildAutomatically的功能以節省時間。

2.下載Spark原始碼:建立空目錄,執行如下語句:git clone https://github.com/apache/spark.git除了使用git指令之外,也可以從Spark的Github頁面下載打包好的原始碼。

3.將原始碼轉化為Eclipse專案:進入原始碼根目錄,執行如下語句:sbteclipse。Sbt執行期間會下載Spark所需要的所有jar包,因此該步驟會花費很長的時間。其中有一些jar包需要使用網路代理等方法才能下載。

4.匯入專案至Eclipse:選擇選單項File->Import,並選擇General->ExistingProjectsintoWorkspace,專案的根路徑選擇原始碼的根路徑,匯入所有專案(共有25個)。

5.修改Scala版本:進入Preference->Scala->Installations,新增機器上安裝的Scala2.10.4(選擇lib目錄)。由於該版本Spark(1.4.0)是在Scala2.10.4的環境下編寫的,需要在Eclipse中修改專案使用的Scala版本。方法為:全選專案,右鍵選擇Scala->SettheScalaInstallation並選擇相應的Scala版本。

6.為old-deps專案新增ScalaLibrary:右鍵選擇old-deps專案,選擇Scala->AddScalaLibrarytoBuildPath。

7.Maveninstall以生成spark-streaming-flume-sink所需要的類:首先將原始碼根目錄中的scalastyle-config.xml檔案複製到spark-streaming-flume-sink專案根目錄中,而後在Eclipse中開啟該專案,右鍵選擇pom.xml檔案,選擇Runas->Maveninstall。

8.修改spark-sql與spark-hive的包錯誤:由於原始碼的包設定有錯誤,為此需要將類檔案移至正確的包中對於spark-sql專案,分別選擇src/test/java中的test.org.apache.spark.sql以及test.org.apache.spark.sql.sources包中的所有類,右鍵選擇Refactor->Move,移動至org.apache.spark.sql以及org.apache.spark.sql.sources包。對於spark-hive專案,分別選擇src/test/java中的test.org.apache.spark.sql.hive以及test.org.apache.spark.sql.hive.execution包中的所有類,移動至org.apache.spark.sql.hive以及org.apache.spark.sql.hive.execution包。

9.編譯所有專案:開啟Project->BuildAutomatically功能,等待所有專案編譯成功。

10.檢查是否安裝成功:將core專案中的src->main->resources->org資料夾拷貝到examples專案中的target->scala-2.10->classes中。而後執行examples專案中的org.apache.spark.examples.SparkPi程式,並設定其jvm引數為-Dspark.master=local