Spark中的Application、Job、Stage與Task區別

首先,我先將這四種的定義列出來,之後咱們再通過簡單代碼進行分析。

RDD任務切分中間分爲:Application、Job、Stage和Task

(1)Application:初始化一個SparkContext即生成一個Application;

(2)Job:一個Action算子就會生成一個Job;

(3)Stage:Stage等於寬依賴的個數加1;

(4)Task:一個Stage階段中,最後一個RDD的分區個數就是Task的個數。

代碼:

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

object Spark_test {
  def main(args: Array[String]): Unit = {
    //創建SparkConf配置文件
    val sparkConf = new SparkConf().setMaster("local[2]").setAppName("test")
    //創建SparkContext對象
    val sc = new SparkContext(sparkConf)

    //3. 創建RDD
    val dataRDD: RDD[Int] = sc.makeRDD(List(1,2,3,4,1,2),2)

    //3.1 聚合
    val resultRDD: RDD[(Int, Int)] = dataRDD.map((_,1)).reduceByKey(_+_)

    // Job:一個Action算子就會生成一個Job;
    //3.2 job1打印到控制檯
    resultRDD.collect().foreach(println)

    //3.3 job2輸出到磁盤
    resultRDD.saveAsTextFile("output")

    Thread.sleep(10000000)

    //釋放資源/關閉連接
    sc.stop()
  }

}

通過http://localhost:4040查看具體情況

 

 

至此,已經結束,不知道我說明白了沒?

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章