Я изучал методы оптимизации Spark и нашел разные способы реализации для достижения оптимизации. Но два имени привлекли мое внимание.
- Обрезка раздела
- Предикат Pushdown
Они говорят:
Обрезка раздела:
Сокращение разделов - это оптимизация производительности, которая ограничивает количество файлов и разделов, которые Spark читает при запросах. После разделения данных запросы, которые соответствуют определенным критериям фильтра разделения, повышают производительность, позволяя Spark читать только подмножество каталогов и файлов.
Предикат Pushdown:
Spark будет пытаться переместить фильтрацию данных как можно ближе к источнику, чтобы избежать загрузки ненужных данных в память. Файлы Parquet и OR C хранят различные статистические данные о каждом столбце в разных порциях данных (например, минимальные и максимальные значения). Программы, читающие эти файлы, могут использовать эти индексы, чтобы определить, нужно ли вообще читать определенные фрагменты и даже целые файлы. Это позволяет программам потенциально пропускать огромные части данных во время обработки.
Читая вышеупомянутые концепции, они, кажется, делают то же самое, что применяют операторы чтения (запросы), которые удовлетворяют предикатам. дано в запросе. Являются ли Pruning Partition Prunate и Predicate Pushdown разными концепциями или я смотрю на них неправильно?