Микропакеты в Spark Structured Streaming: как обновляется потоковый результат

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

Поток карточек данных собирается в небольшие последовательные партии для обработки.

Поток событий не ждёт конца дня

Представим условный сервис, в котором каждую минуту появляются новые заказы. Руководителю нужен счётчик продаж за сегодняшний день. Если пересчитывать отчёт только ночью, данные будут слишком старыми. Но и обрабатывать каждый заказ как отдельный большой расчёт неудобно. Spark Structured Streaming позволяет вести длительную обработку поступающих данных и регулярно обновлять результат. Apache Spark описывает этот подход как потоковую обработку на основе знакомых средств Spark.

Слово «поток» здесь означает, что вход продолжает пополняться. Это не обещание мгновенного появления каждой записи на экране. Между событием и готовым показателем всегда есть получение данных, вычисление и запись результата.

Что такое микропакет

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

В руководстве Apache Spark микропакеты названы основным способом выполнения Structured Streaming. Интервал запуска можно задавать, но реальная задержка зависит также от объёма входа, длительности вычислений и записи. Если предыдущая порция ещё обрабатывается, следующая не становится готовой только потому, что наступил очередной момент запуска.

Условный пример обновления отчёта

Допустим, к 12:00 в систему пришло 100 заказов, а затем ещё 8. Отчёт сначала показывает результат для первой обработанной порции. После обработки следующей порции к нему добавляются новые события. Пользователь может увидеть обновление немного позже 12:00, хотя сами заказы уже сохранены. Это условный пример, а не обещание определённого времени работы Spark.

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

Задержка не равна ошибке

У потокового отчёта есть два разных вопроса: насколько быстро появились уже полученные события и все ли события за нужный период успели прийти. Микропакеты отвечают за регулярное вычисление; они не исправляют сами по себе опоздание источника. Например, терминал магазина может передать чек позже из-за сбоя связи. Тогда показатель за прошедший час способен измениться после нового микропакета.

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

Когда подход полезен

Микропакеты подходят, когда данные поступают постоянно, а результат нужно обновлять часто, но не обязательно поштучно в момент каждого события. Так можно обновлять операционные показатели, отслеживать изменения в источниках или готовить данные для дальнейшей аналитики. Прежде чем выбирать технологию, полезно уточнить допустимую задержку, ожидаемый объём и последствия временно неполного результата.

Для общего различия между регулярной и потоковой обработкой есть отдельное объяснение двух подходов. Здесь важен именно механизм небольших последовательных порций внутри Spark.

По теме

Что изучить дальше

Если хочется разобраться в том, как применять эти идеи на практике, посмотрите курс PySpark для инженеров и аналитиков данных. Сопоставьте программу со своими задачами: один материал объясняет принцип, но не заменяет работу с реальными данными.

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

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

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

Источники

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

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

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

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

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

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

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

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

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

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

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