1 自适应查询
spark.sql.adaptive.enabled 设置为true开启
1.1 动态合并
1.2 动态调整Join策略
1.3 动态优化倾斜Join(Skew Joins)
触发条件:
分区大小 > spark.sql.adaptive.skewJoin.skewedPartitionFactor (default=10) * “median partition size(中位数分区大小)”
分区大小 > spark.sql.adaptive.skewJoin.skewedPartitionThresholdInBytes (default = 256MB)
2 动态分区裁剪
默认的分区裁剪只有在单表查询过滤时才有效
开启动态分区裁剪:自动在Join时对两边表的数据根据条件进行查询过滤,将过滤后的结果再进行join
spark.sql.optimizer.dynamicPartitionPruning.enabled=true
开启动态分区裁剪之后,过滤条件都会先执行 不论是on 还是 where 还是 主副表的条件都会执行