Фильтрация данных в Apache Spark происходит на низком уровне, потому что Spark пытается «сдвинуть» операции фильтрации на уровень базы данных, когда это возможно, потому что базы данных оптимизированы для фильтрации. 2
При работе с условными операторами WHERE или FILTER сразу после загрузки датасета, Spark SQL будет пытаться передать эти предикаты источнику данных, используя соответствующий запрос SQL с условием предложением WHERE. 1 Таким образом, фильтрация опускается до источника данных и выполняется на очень низком уровне, а не работает со всем датасетом после его загрузки в память Spark, чтобы избежать проблем с ней. 1
Кроме того, совмещение предикатного сжатия с сокращением разделов (Partition Pruning) позволяет читать только нужные файлы в указанном разделе, что ещё больше смещает фильтрацию данных к их источнику, предотвращая сохранение ненужных данных в памяти с целью уменьшения дискового ввода-вывода. 1