流程
常用语法
explain(mode="extended"):展示逻辑和物理执行计划
语句
执行计划
未决断分析(只检查语法)
逻辑分析(语义、检查表、列、类型等)
逻辑优化(Catalyst优化器)
物理执行计划(核心)
缩进相同的行,同时执行。从缩进最大的地方开始执行。上图可见:
1、从FileScan开始读取两张表。
2、Project可以理解为需要截取哪些字段,#后面的数据,表示第几列。
3、接着做了广播shuffle,broadcast hash join。
4、Aggregate表示分组聚合。这里出现两次Aggregate,spark提前做了预聚合。在单个reducer内部先聚合。
5、Exchange,利用hash分区器进行数据交换shuffle。
6、shuffle之后,再进行一轮聚合。
物理计划解析
HashAggregate
数据聚合,一般成对出现。第一个是节点本地数据局部聚合,第二个是分区shuffle后再聚合。
Exchange
shuffle,表示在集群上移动数据。通常HashAggregate->Exchange->HashAggregate。
Project
选择列
BroadcastHashJoin
基于广播方式进行HashJoin
LocalTableScan
全表扫描本地表
工作中用web端的好看一些,蓝色那个