Я предполагаю, что это ваш вопрос.
Должен ли я выполнить операцию фильтра перед перераспределением или после перераспределения?
Исходя из этого предположения, фильтр всегда будет пытаться найти записи, соответствующиенекоторые условия.Таким образом, результирующий кадр данных / RDD всегда либо меньше или равен предыдущему кадру данных / RDD.В большинстве случаев результирующий набор меньше предыдущего.
Принимая во внимание, что перераспределение является одной из самых дорогих операций, поскольку она выполняет случайное перемешивание.Всегда помните, что всякий раз, когда мы выполняем перераспределение, чем меньше данных в памяти, тем лучше производительность, которую мы можем получить из этого.
Мне даже не нужно больше говорить о том, как Spark обрабатывает это и т. Д.В общем, фильтр перед перераспределением хорош для производительности!
Например, сам оптимизатор катализатора использует фильтр до и после для повышения производительности.
Ссылка в блоге:
Например, Spark знает, как и когда делать такие вещи, как объединение фильтров или перемещение фильтров перед объединением.Spark 2.0 даже позволяет вам определять, добавлять и тестировать ваши собственные дополнительные правила оптимизации во время выполнения. 1 [2]