在eclipse中修改spark2.1源碼

來源:互聯網
上載者:User

首先聲明下 這是我在eoe上轉載的 寫的很好就摘抄了。。。
參考:
http://cn.soulmachine.me/blog/20130611/
http://scala-ide.org/download/current.html

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包
第一步 下載源碼

sv
n下載,下載地址:
spark:http://svn.igniterealtime.org/svn/repos/spark/trunk
openfire:http://svn.igniterealtime.org/svn/repos/openfire/trunk
smack:http://svn.igniterealtime.org/svn/repos/smack/trunk

建立檔案夾,命名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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.