首先,我先将这四种的定义列出来,之后咱们再通过简单代码进行分析。
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查看具体情况
至此,已经结束,不知道我说明白了没?