ideallij中單步調(diào)試spark源碼的兩種方法

該篇文章介紹多種在ideallij中單步調(diào)試spark源碼的方法,以sparksql為例來進(jìn)行說明

方法一 直接通過app的方式進(jìn)行單步調(diào)試

本方法假設(shè)開發(fā)者已經(jīng)搭建了spark在ideallij中的的運(yùn)行環(huán)境架专,并且可以成功運(yùn)行(注意废岂,是ideallij中運(yùn)行,而不是通過打jar包的方式運(yùn)行)

app源碼

package com.tencent.cubeli.sparksql

import org.apache.spark.{SparkConf, SparkContext}

import org.apache.spark.sql.SparkSession

object DataFrameCreate {

def main(args: Array[String]): Unit = {

val conf = new SparkConf().setMaster("local").setAppName("df create")

val sc = new SparkContext(conf)

val spark = SparkSession.builder().appName("Spark SQL basic example").config("spark.some.config.option", "some-value").getOrCreate()

import spark.implicits._

val df = spark.read.json("file:///Users/waixingren/bigdata-java/spark/sparkproj/data/nation.json")

//??? println("=========group by sum wich dataframe===================")

df.

filter($"nationkey"<9).

groupBy("regionkey").

count.

show()

}

}

注意展辞,以上是以local模式運(yùn)行sparksql,這種方式的優(yōu)點(diǎn)是driver和executor都在同一個本地jvm中,在單步調(diào)試時既可以跟蹤driver流程金吗,也可以跟蹤executor流程。如果不設(shè)置成local模式趣竣,那么只能在本地跟蹤driver的處理流程摇庙。

在app中設(shè)置斷點(diǎn)

如下圖所示:

調(diào)試,點(diǎn)下圖的蟲子標(biāo)志

在提交了運(yùn)行之后遥缕,程序會在斷點(diǎn)處停止卫袒,等待單步調(diào)試,如下圖所示:

下載源碼

在上一步停止之后单匣,點(diǎn)擊step in(根據(jù)keymap映射不同點(diǎn)擊的按鍵有所不同)進(jìn)入方法夕凝,在第一次進(jìn)入時,ideallij會顯示這個方法是它通過反編譯反編譯出來的户秤,這種代碼雖然也可用于調(diào)試码秉,但是不包含注釋等信息,但是右上角會有一個提示讓下載源碼鸡号,點(diǎn)擊下載源碼转砖,ideallij后臺就會去遠(yuǎn)程maven倉庫下載*source.jar,并自動添加到工程的源碼依賴中膜蠢,這時就可以單步調(diào)試spark的源碼了

可以看到堪藐,這種方式的優(yōu)點(diǎn)是簡便,易于操作挑围,但是缺點(diǎn)也很明顯礁竞,單步調(diào)試的源碼并非我們自己的源碼,而是從mavne倉庫下載的*source.jar文件杉辙,如果我們自己修改了源碼模捂,就得在maven打包時,打出*source.jar文件,并install到本地maven倉庫狂男,才能保證單步調(diào)試的是最新的spark源碼综看。

方法二?遠(yuǎn)程調(diào)試方式

該方法要利用ideallij的遠(yuǎn)程調(diào)試功能,eclipse里也有該功能岖食。該方法的優(yōu)點(diǎn)是红碑,可以調(diào)試現(xiàn)網(wǎng)已經(jīng)在運(yùn)行的spark集群,缺點(diǎn)是配置稍微優(yōu)點(diǎn)麻煩泡垃。

導(dǎo)入源碼

選擇spark源碼根目錄析珊,點(diǎn)擊“maven”,然后next

這時會有很多maven進(jìn)行構(gòu)建時的很多profile讓選擇蔑穴,可以根據(jù)實(shí)際情況進(jìn)行勾選忠寻,不勾選就是用默認(rèn)的profile:

一路點(diǎn)擊next,可以根據(jù)實(shí)際情況進(jìn)行修改存和,不修改也可以奕剃,最后點(diǎn)檢完成,執(zhí)行spark源碼導(dǎo)入捐腿,idealilij會進(jìn)行該工程的依賴解析纵朋,等解析完成后就可以在package試圖看到該工程的包試圖,說明導(dǎo)入成功茄袖。

配置遠(yuǎn)程調(diào)試

點(diǎn)擊Edit Configurations...

點(diǎn)擊“+”倡蝙,選擇remote

配置jvm遠(yuǎn)程調(diào)試選項(xiàng),主要是host和port需要修改成spark進(jìn)程所在的host和jmx端口號绞佩,如下圖,可以修改“Name:”猪钮,“Host”品山,“Port”,這里的host一定要是spark運(yùn)行的主機(jī)烤低,port需要是遠(yuǎn)程沒有被使用的端口肘交,并且要記住此端口,待會要用扑馁。

配置完之后保存涯呻。

在spark-defaults.conf文件中添加以下配置:

spark.driver.extraJavaOptions? -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005

spark.executor.extraJavaOptions? -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005

其中的spark.driver.extraJavaOptions是用來調(diào)試driver的,spark.executor.extraJavaOptions是用來調(diào)試executor的腻要,如果driver和executor不在同一個節(jié)點(diǎn)复罐,那么端口可以相同,如果在同一個節(jié)點(diǎn)雄家,那么端口不能一樣效诅。如果suspend=y,說明spark進(jìn)程在啟動時會掛起來,等待ideallij遠(yuǎn)程連接成功之后在繼續(xù)啟動乱投;如果是n咽笼,那么不用等待ideallij遠(yuǎn)程連接,就啟動戚炫,但是會一直監(jiān)聽這個端口剑刑,等待ideallij遠(yuǎn)程連接。

連接

等spark進(jìn)程掛起或者啟動成功之后(根據(jù)suspend是y或者n來決定)双肤,在ideallij中設(shè)置斷點(diǎn)施掏,并啟動剛才配置的遠(yuǎn)程連接,就可以連接到spark的jvm進(jìn)程上杨伙,并進(jìn)行遠(yuǎn)程的但不調(diào)試了

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末其监,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子限匣,更是在濱河造成了極大的恐慌抖苦,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,589評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件米死,死亡現(xiàn)場離奇詭異锌历,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)峦筒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,615評論 3 396
  • 文/潘曉璐 我一進(jìn)店門究西,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人物喷,你說我怎么就攤上這事卤材。” “怎么了峦失?”我有些...
    開封第一講書人閱讀 165,933評論 0 356
  • 文/不壞的土叔 我叫張陵扇丛,是天一觀的道長。 經(jīng)常有香客問我尉辑,道長帆精,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,976評論 1 295
  • 正文 為了忘掉前任隧魄,我火速辦了婚禮卓练,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘购啄。我一直安慰自己襟企,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,999評論 6 393
  • 文/花漫 我一把揭開白布狮含。 她就那樣靜靜地躺著整吆,像睡著了一般拱撵。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上表蝙,一...
    開封第一講書人閱讀 51,775評論 1 307
  • 那天拴测,我揣著相機(jī)與錄音,去河邊找鬼府蛇。 笑死集索,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的汇跨。 我是一名探鬼主播务荆,決...
    沈念sama閱讀 40,474評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼穷遂!你這毒婦竟也來了函匕?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,359評論 0 276
  • 序言:老撾萬榮一對情侶失蹤蚪黑,失蹤者是張志新(化名)和其女友劉穎盅惜,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體忌穿,經(jīng)...
    沈念sama閱讀 45,854評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡抒寂,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,007評論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了掠剑。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片屈芜。...
    茶點(diǎn)故事閱讀 40,146評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖朴译,靈堂內(nèi)的尸體忽然破棺而出井佑,到底是詐尸還是另有隱情,我是刑警寧澤眠寿,帶...
    沈念sama閱讀 35,826評論 5 346
  • 正文 年R本政府宣布毅糟,位于F島的核電站,受9級特大地震影響澜公,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜喇肋,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,484評論 3 331
  • 文/蒙蒙 一坟乾、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧蝶防,春花似錦甚侣、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,029評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽印荔。三九已至,卻和暖如春详羡,著一層夾襖步出監(jiān)牢的瞬間仍律,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,153評論 1 272
  • 我被黑心中介騙來泰國打工实柠, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留水泉,地道東北人。 一個月前我還...
    沈念sama閱讀 48,420評論 3 373
  • 正文 我出身青樓窒盐,卻偏偏與公主長得像草则,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子蟹漓,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,107評論 2 356

推薦閱讀更多精彩內(nèi)容