Кэш в Spark: когда сохранение промежуточного результата помогает

Когда Spark выгодно сохранить промежуточные данные для повторного использования, почему первый расчёт не ускоряется автоматически и как оценить результат.

Чаша с подготовленными кубиками рядом с удалённым шкафом хранения

Зачем повторять уже выполненную работу

Представим условный анализ заказов. Сначала команда очищает исходные записи и связывает их со справочником товаров. Затем на одной подготовленной основе строит три отчёта: по регионам, категориям и времени покупки. Повторять одинаковую подготовку для каждого результата может быть невыгодно.

Кэш позволяет сохранить подготовленные данные ближе к вычислению и использовать их повторно. Это похоже на рабочую полку с уже разобранными документами: не нужно каждый раз идти в архив и снова раскладывать бумаги. Но полка занимает место, а разместить на ней материалы тоже стоит усилий.

Что именно сохраняет Spark

Spark предоставляет механизмы сохранения вычисленных наборов для повторного использования. В зависимости от выбранного способа данные могут находиться в памяти или использовать другие уровни хранения. Поэтому слово «кэш» не следует понимать как обещание, что любой набор полностью поместится в оперативную память.

В руководстве Apache Spark описаны уровни хранения и повторное использование сохранённых разделов данных. Конкретное поведение зависит от выбранного механизма и настроек. Для читателя важен основной смысл: команда пытается обменять часть ресурсов хранения на уменьшение повторной работы.

Первый расчёт тоже нужно выполнить

Чтобы использовать готовый результат, его сначала необходимо получить. Поэтому первый проход с сохранением может не стать быстрее, а иногда окажется дороже из-за дополнительной работы. Выгода проявляется, когда последующие действия действительно читают сохранённую основу вместо повторной подготовки.

В условном примере с тремя отчётами стоит измерять весь сценарий, а не только самый быстрый второй запуск. Время подготовки и сохранения относится к той же задаче. Если отчёт выполняется один раз и промежуточный набор больше никому не нужен, кэш может не окупить свои затраты.

Сохранять всё подряд не нужно

Кандидатом обычно становится результат, который нужен несколько раз и дорого получать заново. При этом важно оценить его объём. Узкая подготовленная таблица с необходимыми полями может быть удобнее огромного набора со всеми исходными подробностями, если будущим действиям эти подробности не нужны.

В документации Spark по производительности описано кэширование таблиц с колоночным представлением и управлением хранением. Это возможность оптимизации, а не универсальное правило. Если память занята ненужными сохранёнными данными, другим операциям может стать тесно, и общий результат ухудшится.

Кэш не заменяет постоянное хранение

Не стоит считать кэш самостоятельным архивом или резервной копией. Его задача связана с выполнением вычислений. Долговременный результат, который должен быть доступен другой команде завтра, требует отдельного решения по сохранению, доступу и проверке. Назначение этих механизмов различается.

Также нужно понимать, какое состояние данных используется. Если источник изменился, заранее уточните правила обновления или повторного построения сохранённого результата в выбранном инструменте. Само наличие кэша не отвечает на вопрос о свежести. В нашем примере три отчёта должны сравнивать согласованную основу, а не случайно разные состояния заказов.

Как проверить пользу на своей задаче

Сравните полный сценарий без сохранения и с ним на одинаковых данных. Учитывайте первый проход, последующие действия, расход памяти и влияние на соседние задания. Отдельно проверьте, что итоговые числа совпадают. Быстрый результат бесполезен, если при изменении процесса поменялся смысл расчёта.

Зафиксируйте, какой набор сохраняется, кто его повторно использует и когда его можно освободить. Если структура отчётов изменилась и общая подготовка больше не повторяется, прежнее решение стоит пересмотреть. Хорошая оптимизация опирается на наблюдаемую повторную работу, а не на желание включить кэширование везде, где такая возможность есть.

Читайте также

Обучение в NovaData

Если тема связана с задачами вашей работы, изучите PySpark для инженеров и аналитиков данных в NovaData. Сопоставьте программу, требования к подготовке и формат с тем, что хотите научиться делать. Карточка ниже поможет познакомиться с профильным направлением.

PySpark для инженеров и аналитиков данных
Курс
Доступ сразу
PySpark для инженеров и аналитиков данных

Разработчик PySpark — это инженер, который обрабатывает большие объемы данных с помощью распределённых вычислений и строит масштабируемые системы обработки данных.

С нуля до junior
Теория и практика
Диплом по окончании
12 990
₽/мес
УЗНАТЬ ПОДРОБНЕЕ

Источники

Читайте также

Обучить команду или нанять специалиста по данным: как выбрать
47

Обучить команду или нанять специалиста по данным: как выбрать

Как руководителю определить, какие навыки развивать внутри команды, когда нужна новая роль и почему обучение и найм часто дополняют друг друга.
Вертикальное и горизонтальное масштабирование данных: в чём разница
46

Вертикальное и горизонтальное масштабирование данных: в чём разница

Когда системе добавляют мощность одного сервера, когда делят работу между несколькими и почему увеличение ресурсов само по себе не решает любую проблему.
Журнал изменений данных: как выяснить, кто и когда изменил набор
42

Журнал изменений данных: как выяснить, кто и когда изменил набор

Что можно узнать из журнала действий с данными, как он помогает разбирать ошибки и почему его записи не показывают всю историю сами по себе.

Занятия проходят
в Нова Дата СДО

Вебинары, практика и общение с преподавателем — в одном окне браузера.

Посмотреть интерфейс платформы
Календарь обучения в Нова Дата СДО
Курсы студента в Нова Дата СДО
Редактор кода для практики в Нова Дата СДО
Вебинары и расписание Ваши курсы Код в браузере
Нова Дата СДО — в реестре российского ПОРеестровая запись № 34931
Заявка отправлена
Отправим вам подборку курсов в течение 5 минут. С вами также свяжется наш специалист и даст карьерную консультацию.
Персональный промокод
На курс «Инженер по парсингу данных»
Введите код при оплате, чтобы применить скидку к программе.