Stale Statistics and Bad Joins: How Spark's Adaptive Query Execution Fixes Plans Mid-Flight
Spark's static optimizer often picks expensive joins and creates tiny shuffle partitions when table statistics are stale. Adaptive Query Execution re-optimizes the physical plan at runtime using actual cardinalities, coalescing partitions and switching join strategies on the fly.