就Spark提交程序來說,最終都是通過Spark-submit命令來實現的,不同的是spark-shell在運行時,會先進行一些初始參數的設置,然後調用Sparksubmit來運行,並且spark-shell是交互式的。
下面我們從源代碼的角度來解釋。
首先看下Spark-Shell命令,其中它會調用main方法
在mian方法中,會調用spark-submit 並傳入—class的參數(入口類)為org.apache.spark.repl.Main,設置應用程序名—name “Spark shell” 傳入spark-shell接收的所有參數$@。
而在Spark-submit中是通過exec命令啟動進程的,如下圖:
總結:所用的應用程序最後的提交都是由spark-submit完成的,其他程序的調用只是對spark-submit的參數進行設置後,調用spark-submit來完成應用程序的提交到集群的操作。