Искровой фильтр, порядок работы O (1) или O (n) - PullRequest
0 голосов
/ 09 октября 2018

Я пытаюсь понять концепцию искры, но в какой-то момент просто запутался, хотел узнать, является ли spark.filter O (n) или O (1) и что если я сначала отсортирую данные, а затем включу фильтрациюповлияет ли это на сложность заказа.

Итак, попробуем объяснить более подробно: -

Data (1,1,2,3,4,2,3)
Case 1 : Spark.filter(id.equals(3))
Case 2 : Spark.sortBy(id).filter(id.equals(3))

В каком случае будет какая сложность.

1 Ответ

0 голосов
/ 09 октября 2018

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...