Spark應(yīng)用程序剖析
每個(gè)Spark應(yīng)用程序都從創(chuàng)建SparkContext開(kāi)始廊勃。
若沒(méi)有SparkContext封拧,則不能啟動(dòng)計(jì)算(如Spark作業(yè))岂却。
Spark應(yīng)用程序由(applicationId, application attempt-id)唯一標(biāo)識(shí)泉唁。
Spark應(yīng)用程序是SparkContext的一個(gè)實(shí)例雷酪。 或者換句話說(shuō)捂龄,SparkContext構(gòu)成了一個(gè)Spark應(yīng)用程序释涛。
舉例如下:
import org.apache.spark.{SparkContext, SparkConf}
object SampleApp {
def main(args: Array[String]) {
val masterURL = "local[*]" // (1)
val conf = new SparkConf() //(2)
.setAppName("SparkMe Application")
.setMaster(masterURL)
val sc = new SparkContext(conf) //(3)
val fileName = "/tmp/test.xt"
val lines = sc.textFile(fileName).cache() //(4)
val c = lines.count() //(5)
println(s"There are $c lines in $fileName")
}
}
- Master URL
- 創(chuàng)建 Spark configuration
- 創(chuàng)建 Spark context
- 創(chuàng)建 lines RDD
- 執(zhí)行 count 操作
Spark shell會(huì)在啟動(dòng)時(shí)為你創(chuàng)建一個(gè)Spark context 和SQL context加叁。
Spark應(yīng)用程序啟動(dòng)時(shí),它將按照MasterURL所述連接到Spark Master唇撬。 這是Spark context初始化的一部分它匕。
Spark應(yīng)用程序可以在本地運(yùn)行,也可以在定義了集群管理器和部署模式(--deploy-mode)的集群上運(yùn)行窖认。
然后豫柬,你可以創(chuàng)建RDD,將其轉(zhuǎn)換為其他RDD并最終執(zhí)行操作扑浸。 你也可以緩存臨時(shí)RDD來(lái)加速數(shù)據(jù)處理烧给。完成所有數(shù)據(jù)處理后,Spark應(yīng)用程序可以通過(guò)終止Spark context來(lái)結(jié)束(sc.stop)喝噪。