Use Adaptive Query Execution to Reoptimize Spark 3.x Joins and Shuffle Partitions at Runtime
Spark 3.x Adaptive Query Execution reoptimizes shuffle partitioning, join strategy and skew handling at runtime using actual shuffle statistics instead of static estimates.