Spark SQL
имеет Catalyst Query Optimizer , который заботится о том, как выполнить запрос.
Catalyst - это оптимизатор SQL-запросов Spark, который используется длявозьмите план запроса и преобразуйте его в план выполнения, который может запустить Spark.
Spark SQL создает дерево, представляющее наш план запросов, которое называется logical plan
.Spark может применить ряд оптимизаций к логическому плану, а также может выбирать между несколькими физическими планами для одного и того же логического плана, используя cost-based model
.
Для фильтров используется PushDownPredicate который входит в состав Catalyst Optimizer.
Когда вы выполняете операторы where or filter
сразу после загрузки набора данных, Spark SQL попытается передать предикат where / filter в источник данных, используя соответствующий запрос SQL с WHERE.
Эта оптимизация называется filter pushdown or predicate pushdown
и направлена на снижение фильтрации до «голого металла», то есть механизма источника данных.
Фильтрация выполняется на самомнизкий уровень, а не работа со всем набором данных
для получения дополнительной информации вы можете проверить эти ссылки:
Catalyst Optimizer
Предикат Pushdown