1. 程式人生 > >【Spark核心原始碼】解析“spark-shell”(二)

【Spark核心原始碼】解析“spark-shell”(二)

接著【初探Spark核心】解析“spark-shell”(一)來看

根據main的執行日誌來看,我們直接看一下org.apache.spark.repl.Main.main方法:

main方法中建立了SparkILoop物件,作為引數傳遞給了doMain方法,並呼叫了doMain方法。

在doMain方法中進行了jar包的載入和設定,便開始執行SparkILoop的precess方法。

SparkILoop繼承了Scala類庫中的ILoop,precess方法便是ILoop類中的方法,在precess方法中執行了loadFiles(settings)

在SparkILoop類中,重寫了loadFiles方法,主要是為了呼叫initializeSpark

方法

下面是initializeSpark中的內容

initializeSpark中一共做了三件事情:

1、建立SparkSession並賦值給spark

2、建立SparkContext並賦值給sc

3、引入spark資源

這樣在spark repl中我們就可以直接使用spark和sc還有常用的相關資源。

之前在ILoop類中的process方法中還指出了printWelcome()方法,在SparkILoop類中還重寫了printWelcome()方法,具體如下:

這就是在鍵入spark-shell時,輸出LOGO的實現方法。

至此,spark-shell的主要執行過程就看得差不多了。

這裡總結一下整個過程: