Агрегированные данные в Azure Databricks

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

Пакетные агрегаты

Агрегация в пакетном режиме — это поведение по умолчанию, наблюдаемое при выполнении ad hoc запроса в SQL или обработке данных с помощью DataFrame в Apache Spark.

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

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

Агрегаты с отслеживанием состояния

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

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

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

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

Инкрементные агрегаты

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

Приблизительные агрегаты

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

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

Spark SQL имеет следующие собственные методы для приближения агрегатов к числовым или категориальным данным:

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

Мониторинг наборов данных с помощью статистических статистических данных

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