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查看具体情况

 

 

至此,已经结束,不知道我说明白了没?

 

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