一 产看执行计划Explain
1 simple 只展示物理执行计划。
2 extended 展示物理执行计划和逻辑执行计划。
3 codegen 展示要 Codegen 生成的可执行 Java 代码。
4 cost 展示优化后的逻辑执行计划以及相关的统计。
5 formatted 以分隔的方式输出,它会输出更易读的物理执行计划,并展示每个节点的详细信息。
执行计划关键字详解:
1 HashAggregate 运算符表示数据聚合,一般 HashAggregate 是成对出现,第一个HashAggregate 是将执行节点本地的数据进行局部聚合,另一个 HashAggregate 是将各个分区的数据进一步进行聚合计算。
2 Exchange 代表Shuffle,表示需要在集群上移动数据。很多时候HashAggregate 会以 Exchange 分隔开来。
3 Project SQL 中的裁剪操作,就是列选择。如:select name, id…
4 BroadcastHashJoin 表示通过基于广播方式进行 Hash Join。
5 LocalTableScan 运算符就是全表扫描本地的表。
二 资源设定
(1)分配资源
executor-memory、executor-cores、driver-memory
(2)如何设置这些资源
在实际的生产环境中,提交spark任务时,使用spark-submit shell脚本,在里面调整对应的参数。
提交任务的脚本:
spark-submit \
--master spark://node1:7077 \