01-从WordCount程序理解Spark术语及术语间的关系
1. 应用程序(Application)
通过下面的代码设置应用程序名称,设置后再UI中可以看到相应的名称。
//1.设置Application的名称
val conf = new SparkConf()
conf.setAppName("WordCount")
conf.setMaster("local")
2. 作业(Job)
Job由scala的执行算子生成,每个执行的算子会调起runjob,从而生成一个job。
res.foreach(println)
value.foreach(println)
3. 阶段(Stage)
Stage表是任务执行的阶段,以聚合类算子为分界点划分stage,聚合类的算子需要经过shuffle的过程,也就是需要从其他的结点拉取数据,因此shuffle前的stage是的操作是可以在同一个节点完成。
val res = dataSets.flatMap(_.split(" ")).map((_, 1)).reduceByKey(_ + _)
val value = res.map(x => {
(x._2, 1)
}).reduceByKey((ordVal: Int, newVal: Int) => {
ordVal + newVal
})
4.Application,Job,Stage,Task的关系
一个Application可以生成多个Job,每个Job由执行算子生成。一个Job以shuffle类算子为分界点,将job划分成不同的阶段(Stage)。每个stage有多个task执行。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现