Apache Spark源碼走讀之18 -- 使用Intellij idea調試Spark源碼

來源:互聯網
上載者:User

標籤:style   blog   http   color   使用   strong   

歡迎轉載,轉載請註明出處,徽滬一郎。

概要

上篇博文講述了如何通過修改源碼來查看呼叫堆疊,儘管也很實用,但每修改一次都需要編譯,花費的時間不少,效率不高,而且屬於侵入性的修改,不優雅。本篇講述如何使用intellij idea來跟蹤調試spark源碼。

前提

本文假設開發環境是在Linux平台,並且已經安裝下列軟體,我個人使用的是arch linux。

  1. jdk
  2. scala
  3. sbt
  4. intellij-idea-community-edition
安裝scala外掛程式

為idea安裝scala外掛程式,具體步驟如下

  1. 選擇File->Setting

     2 步驟2: 選擇右側的Install Jetbrains Plugin,在快顯視窗的左側輸入scala,然後點擊安裝,如所示

      3. scala外掛程式安裝結束,需要重啟idea生效

由於idea 13已經原生支援sbt,所以無須為idea安裝sbt外掛程式。

源碼下載和匯入

下載源碼,假設使用git同步最新的源碼

git clone https://github.com/apache/spark.git

產生idea工程

sbt/sbt gen-idea

匯入Spark源碼

   1. 選擇File->Import Project, 在彈出的視窗中指定spark源碼目錄

   2. 選擇項目類型為sbt project,然後點擊next

   3. 在新彈出的視窗中點擊Finish

 

匯入設定完成,進入漫長的等待,idea會對匯入的源碼進行編譯,同時會組建檔案索引。

如果在提示欄出現如下的提示內容"is waiting for .sbt.ivy.lock",說明該lock檔案無法建立,需要手工刪除,具體操作如下

cd $HOME/.ivy2rm *.lock

手工刪除掉lock之後,重啟idea,重啟後會繼續上次沒有完成的sbt過程。

源碼編譯

使用idea來編譯spark源碼,中間會有多次出錯,問題的根源是sbt/sbt gen-idea的時候並沒有很好的解決依賴關係。

解決辦法如下,

   1. 選擇File->Project Structures

   2. 在右側dependencies中添加新的module,

選擇spark-core

其它模組如streaming-twitter, streaming-kafka, streaming-flume, streaming-mqtt出錯的情況解決方案與此類似。

注意Example編譯報錯時的處理稍有不同,在指定Dependencies的時候,不是選擇Library而是選擇Module dependency,在彈出的視窗中選擇sql.

有關編譯出錯問題的解決可以看一下這個連結,http://apache-spark-user-list.1001560.n3.nabble.com/Errors-occurred-while-compiling-module-spark-streaming-zeromq-IntelliJ-IDEA-13-0-2-td1282.html

調試LogQuery

1. 選擇Run->Edit configurations

2. 添加Application,注意右側視窗中配置項內容的填寫,分別為Main class, vm options, working directory, use classpath of module

-Dspark.master=local 指定Spark的運行模式,可根據需要作適當修改。

3. 至此,在Run菜單中可以發現有"Run LogQuery"一項存在,嘗試運行,保證編譯成功。

4. 斷點設定,在源檔案的左側雙擊即可打上斷點標記,然後點擊Run->"Debug LogQuery", 大功告成,如所示,可以查看變數和呼叫堆疊了。

 

參考

  1. http://8liang.cn/intellij-idea-spark-development
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.