Поделиться через


Пакетная обработка и потоковая передача данных в Azure Databricks

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

Потоковая передача обычно ассоциируется с низкой задержкой и непрерывной обработкой через системы обмена сообщениями, такие как Apache Kafka.

Однако в Azure Databricks он имеет более обширное определение. Базовый модуль декларативных конвейеров Lakeflow (Apache Spark и структурированная потоковая передача) имеет унифицированную архитектуру для пакетной и потоковой обработки:

  • Модуль может рассматривать такие источники, как облачное хранилище объектов и Delta Lake , как источники потоковой передачи для эффективной добавочной обработки.
  • Потоковая обработка может выполняться в триггерном или непрерывном режиме, обеспечивая гибкость в управлении затратами и производительностью для стриминговых рабочих нагрузок.

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

Семантика пакетной обработки

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

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

Пакетная обработка

Семантика потоковой передачи

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

Потоковая обработка

Пакетная передача и потоковая передача

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

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

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

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

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

В таблице ниже описаны преимущества и минусы пакетной и потоковой обработки, а также различные функции продукта, поддерживающие эти две семантики обработки в Databricks Lakeflow.

Партия Стриминг
Плюсы
  • Логика обработки проста.
  • Результаты всегда точны и отражают все доступные данные в источнике.
  • Обрабатываются только новые данные, что делает этот процесс эффективным.
  • Быстрее может обрабатывать требования к задержке от часов до минут, секунд и миллисекунд.
Минусы
  • Это не так эффективно; данные будут повторно обрабатываться в определенной пакетной секции.
  • Медленнее, может обрабатывать требования к задержке от часов до минут, но не секунд или миллисекунд.
  • Логика обработки может быть сложной, особенно когда дело касается обработки данных с отслеживанием состояния, таких как соединения, агрегации, дедупликации и так далее.
  • Результаты не всегда могут быть точными, учитывая неупорядоченные и поздние данные о прибытии.
Продукты проектирования данных

Рекомендации

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

Слой медальона Характеристики рабочей нагрузки Рекомендация
Бронза
  • Рабочие нагрузки загрузки данных.
  • Обычно не требует или предполагает обработку без состояния для постепенного добавления из источников данных.
  • Размер данных обычно больше.
  • Потоковая обработка обычно является лучшим выбором, учитывая, что пользователи могут воспользоваться преимуществами потоковой передачи, но не быть подверженными сложностям потоковой обработки с отслеживанием состояния.
Серебро
  • Нагрузки рабочих процессов преобразования.
  • Как правило, включает как обработку без сохранения состояния, например, фильтрация, и обработку с сохранением состояния, например, соединения, агрегаты и дедупликации.
  • Используйте пакетную обработку (с добавочным обновлением в материализованных представлениях), чтобы избежать сложностей потоковой обработки с отслеживанием состояния.
  • Используйте потоковую обработку в качестве варианта для вариантов использования, когда эффективность и задержка гораздо важнее, чем точность результатов. Учитывайте сложности, представленные обработкой потоковой передачи с отслеживанием состояния.
Золото
  • Нагрузки на заключительном этапе агрегирования.
  • Обычно включает обработку с сохранением состояния: например, соединения и агрегации.
  • Размер данных обычно меньше.
  • Используйте пакетную обработку (с добавочным обновлением в материализованных представлениях), чтобы избежать сложностей потоковой обработки с отслеживанием состояния.