Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье приводятся общие семантики для агрегирования и рассматриваются различия между результатами, вычисляемых с помощью пакетных запросов, материализованных представлений и потоковой передачи.
Пакетные агрегаты
Агрегация в пакетном режиме — это поведение по умолчанию, наблюдаемое при выполнении ad hoc запроса в SQL или обработке данных с помощью DataFrame в Apache Spark.
Агрегатный запрос, написанный в таблице или источнике данных, вычисляет статистическую статистику для всех записей в источнике данных. Azure Databricks использует оптимизации и метаданные, когда это возможно, для повышения эффективности выполнения запросов и может эффективно вычислять многие агрегаты для больших наборов данных.
Задержка пакетного агрегирования и затраты на вычислительные ресурсы могут увеличиваться по мере увеличения размера данных, а предварительно вычисляемые часто используемые агрегированные значения позволяют сэкономить пользователям существенное время и деньги. Databricks рекомендует использовать материализованные представления для добавочного обновления статистических значений. См инкрементные агрегаты.
Агрегаты с отслеживанием состояния
Агрегаты, определённые в потоковых рабочих нагрузках, являются с сохранением состояния. Агрегаты состояния отслеживают наблюдаемые записи с течением времени и пересчитывают результаты при обработке новых данных.
При вычислении статистических выражений с отслеживанием состояния необходимо использовать подложки. Пропуск водяного знака в состоянии агрегатного запроса приводит к бесконечному накоплению сведений о состоянии с течением времени. Это приводит к замедлению обработки и может привести к ошибкам вне памяти.
Для вычисления статистики по всему набору данных не следует использовать агрегат с состоянием. Databricks рекомендует использовать материализованные представления для добавочного статистического вычисления для всего набора данных. См инкрементные агрегаты.
Настройка рабочих нагрузок, которые вычисляют состояния агрегатов эффективно и правильно, требует понимания того, как данные поступают из исходных систем и как Azure Databricks использует водяные знаки, режимы выходных данных и интервалы триггеров для управления состоянием запроса и вычисления результатов.
Инкрементные агрегаты
Материализованные представления можно использовать для вычисления множества статистических значений постепенно. Материализованные представления автоматически отслеживают изменения в источнике данных и применяют соответствующие обновления к статистическим значениям при обновлении. Результаты, возвращаемые материалзированным представлением, эквивалентны тем, которые возвращаются путем повторной компиляции статистических результатов для исходных данных с пакетным заданием или нерегламентированным запросом.
Приблизительные агрегаты
Хотя Azure Databricks специализируется на вычислениях на очень больших наборах данных, использование приближений для агрегирования может ускорить обработку запросов и сократить затраты, когда точные результаты не требуются.
Использование LIMIT инструкций иногда бывает достаточно для быстрого получения снимка данных, но не добавляет случайности и не гарантирует распределение выборки по всему набору данных.
Spark SQL имеет следующие собственные методы для приближения агрегатов к числовым или категориальным данным:
-
approx_count_distinctагрегатная функция -
approx_percentileагрегатная функция -
approx_top_kагрегатная функция
Можно также указать процент выборки TABLESAMPLE, чтобы создать случайную выборку из набора данных и рассчитать приблизительные агрегаты. См. пункт TABLESAMPLE.
Мониторинг наборов данных с помощью статистических статистических данных
Профилирование данных использует статистическую статистику и распределение данных для отслеживания качества данных с течением времени. Вы можете создавать отчеты для визуализации тенденций и планирования оповещений, чтобы пометить непредвиденные изменения в данных. См. профилирование данных.