一,Spark运行时程序调度
1,Spark应用程序会在一个物理节点上有驱动程序(Driver)
2,驱动程序(Driver)会分发每个tasks到Worker节点
3,Worker节点就会返回result到Dirver节点
二,Spark程序运行流程
1,分布式文件系统(File system)--加载数据集(RDD)
2,transformations延迟执行--针对RDD的操作
3,Action触发执行
三,Spark为何要做缓存
1,lines = sc.textFile(“hdfs://...”)
加载进来成为RDD
2,errors = lines.filter(_.startsWith(“ERROR”))
Transformation转换
3,errors.persist()
缓存RDD
4,Mysql_errors = errors.filter(_.contain(“MySQL”)).count
Action执行
5,http_errors = errors.filter(_.contain(“Http”)).count
Action执行
由上面的代码可以看出
1和2是Transformation操作,
4是Action操作就会触发Job,
如果不做3的缓存那一步,5就会找不到errors这个RDD