Spark IDEA 調試(反編譯)


1)以WordCount為例,具體代碼如下:

 1 import org.apache.spark.SparkConf
 2 import org.apache.spark.SparkContext;
 3 import org.apache.spark.SparkContext._
 4 /**
 5   * Created by hfz on 2016/4/21.
 6   */
 7 object test2 {
 8   def main (args: Array[String]){
 9     var conf=new SparkConf().setAppName("WordCount").setMaster("local");
10     var sc=new SparkContext(conf);
11     var rdd=sc.textFile("data/README.md");
12     rdd.flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_);
13     rdd.collect();
14 
15 
16   }
17 
18 
19 }

     如果我們希望深入到sc.textFile()內部搞清楚都做了什么操作,如果是Java的話,我們直接CTRL+B,IDEA就自動把jar包中的字節碼反編譯為Java源碼,並且,我們可以直接下個斷點調試程序,但是對於Scala,IDEA的反編譯效果並不是很好,如下圖所示:

2)提示“Source not found”,我們在看textFile()方法,只可以看到方法的參數列表,方法體的內容卻看不到,只能看到“compiled code”也就是“編譯后的代碼”。解決方法如下:

a.下載Spark1.4源碼

b.然后點擊右上角的“Attach Source”,添加源碼,如下所示:

     添加路徑是“spark1.4.0/core/src/main/scala/org”,然后點擊OK確定。“Attching”完成之后,我們就可以看到textFile()的方法體了,並且可以像之前調試hadoop一樣,在這個方法下斷點,運行程序的時候,會在這里命中斷點,如下所示(這里只是加了個斷點,沒有調試):

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM