1.AQE(Adaptive Query Execution)
- 自适应查询执行
- 默认不开启,通过设置spark.sql.adaptive.enabled=true开启
- 主要包括三方面:
- Join策略调整:运行时动态的将原来的Shuffle Join调整为Broadcast Join,依赖Shuffle中间文件的统计信息
- 分区自动合并:通过spark.sql.adaptive.advisoryPartitionSizeInBytes 来直接指定合并后的目标分区大小,spark.sql.adaptive.coalescePartitions.minPartitionNum用来限制Reduce阶段在合并后的并行度不能小于该值
- 自动倾斜处理:两个参数判断倾斜分区,另一个参数用于拆分倾斜分区,将所有数据分区排序,取中位数作为基数,然后乘以比例系数,得到阈值,分区大于阈值的有可能判定为倾斜分区,同时还要大于最低阈值,才能被判定为倾斜分区
2.DPP(Dynamic Partition Pruning)
- 动态分区裁剪:基于运行时的信息进行分区裁剪,减少数据扫描量、降低I/O开销等
- 需满足三个条件:
- 必须是分区表
- 只支持等值join
- 小表过滤之后的数据必须小于广播阈值
posted @
2022-02-16 23:42
马晟
阅读(
874)
评论()
编辑
收藏
举报