Deep Dive into Spark SQL's Catalyst Optimizer - The Databricks Blog