如何查看Spark 2.1.2中(广播)Join查询的作业与Stage数量?
查看Spark广播Join的作业与Stage数量
嘿,我来帮你一步步搞清楚怎么在Spark UI里找到你这个Join查询的作业和Stage数量~
一、先打开Spark UI
你用spark-shell --master local启动的话,Spark默认会在本地开启UI服务,默认端口是4040。直接打开浏览器输入http://localhost:4040就能访问啦。要是4040被别的程序占了,Spark会自动用4041、4042这类端口,你可以去spark-shell的启动日志里找类似「Started SparkUI at http://xxx:xxxx」的日志行,那里面的地址就是UI的入口。
二、查看作业(Jobs)数量
- 进入UI后,点击顶部的Jobs标签页。
- 这里要注意哦:Spark是懒执行的!你写的Join和Select代码只是定义了转换逻辑,只有当你调用
show()、count()这类action操作时,才会真正提交作业运行。所以你得先触发action,Jobs标签里才会出现对应的作业。 - 像你这种简单的Join+Select操作,一般只会生成1个作业。你看Jobs列表里的条目数,就是作业的数量啦。
三、查看Stage数量
- 你可以点Jobs标签里对应作业的描述链接,或者直接切换到顶部的Stages标签页。
- 因为你用的是广播Join(Spark会自动判断小表并广播,或者你也可以手动用
broadcast()函数指定),这个过程会分成两个Stage:- 第一个Stage是专门用来广播小DataFrame的,任务类型会标注类似
broadcast; - 第二个Stage是执行实际的left outer Join和Select操作的。
- 第一个Stage是专门用来广播小DataFrame的,任务类型会标注类似
- 所以你在Stages列表里数一下,就能看到总共有2个Stage啦。每个Stage的详情里还能看到任务数、处理的数据量,帮你确认广播Join是不是真的在运行。
小补充:确认广播Join是否生效
要是你想确认这个Join确实是广播Join,可以去Stages的详情里看算子描述,会出现BroadcastHashJoin的字样;另外Spark 2.x的UI里有SQL标签,进去能看到查询的执行计划,里面也会明确显示BroadcastHashJoin节点。
内容的提问来源于stack exchange,提问作者sujit
相关产品推荐
相关产品推荐

