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


Создание монитора с помощью API

На этой странице описывается создание монитора в Databricks с помощью пакета SDK Databricks и описание всех параметров, используемых в вызовах API. Вы также можете создавать мониторы и управлять ими с помощью REST API. Справочные сведения см. в справочнике по пакету SDK для мониторинга Lakehouse и справочнике по REST API.

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

Требования

API мониторинга Lakehouse встроен в databricks-sdk 0.28.0 и выше. Чтобы использовать последнюю версию API, выполните следующую команду в начале записной книжки для установки клиента Python:

%pip install "databricks-sdk>=0.28.0"

Чтобы выполнить проверку подлинности для использования пакета SDK Databricks в вашей среде, см . статью "Проверка подлинности".

Типы профилей

При создании монитора вы выбираете один из следующих типов профилей: TimeSeries, InferenceLog или Моментальный снимок. В этом разделе кратко описывается каждый вариант. Дополнительные сведения см. в справочнике по API или справочнике по REST API.

Примечание.

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

Совет

Для TimeSeries и Inference профилей рекомендуется включить веб-канал данных изменений (CDF) в таблице. Если CDF включен, обрабатываются только только новые добавленные данные, а не повторной обработки всей таблицы при каждом обновлении. Это повышает эффективность выполнения и снижает затраты при масштабировании мониторинга во многих таблицах.

TimeSeries профиль

Профиль TimeSeries сравнивает распределение данных по периодам времени. TimeSeries Для профиля необходимо указать следующее:

  • Столбец метки времени (timestamp_col). Тип данных столбца метки времени должен быть либо TIMESTAMP типом, который можно преобразовать в метки времени с помощью to_timestamp функции PySpark.
  • Набор, granularities по которому необходимо вычислить метрики. Доступные детализированные: "5 минут", "30 минут", "1 час", "1 день", "n неделя", "1 месяц", "1 год".
from databricks.sdk import WorkspaceClient
from databricks.sdk.service.catalog import MonitorTimeSeries

w = WorkspaceClient()
w.quality_monitors.create(
  table_name=f"{catalog}.{schema}.{table_name}",
  assets_dir=f"/Workspace/Users/{user_email}/databricks_lakehouse_monitoring/{catalog}.{schema}.{table_name}",
  output_schema_name=f"{catalog}.{schema}",
  time_series=MonitorTimeSeries(timestamp_col=ts, granularities=["30 minutes"])
)

InferenceLog профиль

Профиль InferenceLog похож на TimeSeries профиль, но также включает метрики качества модели. InferenceLog Для профиля требуются следующие параметры:

Параметр Описание
problem_type MonitorInferenceLogProblemType.PROBLEM_TYPE_CLASSIFICATION или MonitorInferenceLogProblemType.PROBLEM_TYPE_REGRESSION
prediction_col Столбец, содержащий прогнозируемые значения модели.
timestamp_col Столбец, содержащий метку времени запроса вывода.
model_id_col Столбец, содержащий идентификатор модели, используемой для прогнозирования.
granularities Определяет, как секционировать данные в окнах по времени. Возможные значения: "5 минут", "30 минут", "1 час", "1 день", "n неделя", "1 месяц", "1 год".

Существует также необязательный параметр:

Необязательный параметр . Description
label_col Столбец, содержащий основу для прогнозирования моделей.
from databricks.sdk import WorkspaceClient
from databricks.sdk.service.catalog import MonitorInferenceLog, MonitorInferenceLogProblemType

w = WorkspaceClient()
w.quality_monitors.create(
  table_name=f"{catalog}.{schema}.{table_name}",
  assets_dir=f"/Workspace/Users/{user_email}/databricks_lakehouse_monitoring/{catalog}.{schema}.{table_name}",
  output_schema_name=f"{catalog}.{schema}",
  inference_log=MonitorInferenceLog(
        problem_type=MonitorInferenceLogProblemType.PROBLEM_TYPE_CLASSIFICATION,
        prediction_col="preds",
        timestamp_col="ts",
        granularities=["30 minutes", "1 day"],
        model_id_col="model_ver",
        label_col="label", # optional
  )
)

Для профилей InferenceLog автоматически создаются срезы на основе различных значений model_id_col.

Snapshot профиль

В отличие от TimeSeriesэтого Snapshot , профиль отслеживает, как полное содержимое таблицы изменяется с течением времени. Метрики вычисляются по всем данным в таблице и отслеживают состояние таблицы при каждом обновлении монитора.

from databricks.sdk import WorkspaceClient
from databricks.sdk.service.catalog import MonitorSnapshot

w = WorkspaceClient()
w.quality_monitors.create(
  table_name=f"{catalog}.{schema}.{table_name}",
  assets_dir=f"/Workspace/Users/{user_email}/databricks_lakehouse_monitoring/{catalog}.{schema}.{table_name}",
  output_schema_name=f"{catalog}.{schema}",
  snapshot=MonitorSnapshot()
)

Обновление и просмотр результатов мониторинга

Чтобы обновить таблицы метрик, используйте run_refresh. Например:

from databricks.sdk import WorkspaceClient

w = WorkspaceClient()
w.quality_monitors.run_refresh(
    table_name=f"{catalog}.{schema}.{table_name}"
)

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

Сведения о статистике, хранящейся в таблицах метрик, см. в разделе "Мониторинг таблиц метрик" — таблицы каталога Unity. Вы можете запросить их в записных книжках или в обозревателе запросов SQL и просмотреть их в обозревателе каталогов.

Чтобы отобразить журнал всех обновлений, связанных с монитором, используйте list_refreshes.

from databricks.sdk import WorkspaceClient

w = WorkspaceClient()
w.quality_monitors.list_refreshes(
    table_name=f"{catalog}.{schema}.{table_name}"
)

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

from databricks.sdk import WorkspaceClient

w = WorkspaceClient()
run_info = w.quality_monitors.run_refresh(table_name=f"{catalog}.{schema}.{table_name}")

w.quality_monitors.get_refresh(
    table_name=f"{catalog}.{schema}.{table_name}",
    refresh_id = run_info.refresh_id
)

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

from databricks.sdk import WorkspaceClient

w = WorkspaceClient()
run_info = w.quality_monitors.run_refresh(table_name=f"{catalog}.{schema}.{table_name}")

w.quality_monitors.cancel_refresh(
    table_name=f"{catalog}.{schema}.{table_name}",
    refresh_id=run_info.refresh_id
)

Просмотр параметров монитора

Вы можете просмотреть параметры монитора с помощью API get_monitor.

from databricks.sdk import WorkspaceClient

w = WorkspaceClient()
w.quality_monitors.get(f"{catalog}.{schema}.{table_name}")

Расписание

Чтобы настроить монитор для запуска по расписанию, используйте schedule параметр create_monitor:

from databricks.sdk import WorkspaceClient
from databricks.sdk.service.catalog import MonitorTimeSeries, MonitorCronSchedule

w = WorkspaceClient()
w.quality_monitors.create(
  table_name=f"{catalog}.{schema}.{table_name}",
  assets_dir=f"/Workspace/Users/{user_email}/databricks_lakehouse_monitoring/{catalog}.{schema}.{table_name}",
  output_schema_name=f"{catalog}.{schema}",
  time_series=MonitorTimeSeries(timestamp_col=ts, granularities=["30 minutes"]),
  schedule=MonitorCronSchedule(
        quartz_cron_expression="0 0 12 * * ?", # schedules a refresh every day at 12 noon
        timezone_id="PST",
    )
)

Дополнительные сведения см . в выражениях cron.

Notifications

Чтобы настроить уведомления для монитора, используйте notifications параметр create_monitor:

from databricks.sdk import WorkspaceClient
from databricks.sdk.service.catalog import MonitorTimeSeries, MonitorNotifications, MonitorDestination

w = WorkspaceClient()
w.quality_monitors.create(
  table_name=f"{catalog}.{schema}.{table_name}",
  assets_dir=f"/Workspace/Users/{user_email}/databricks_lakehouse_monitoring/{catalog}.{schema}.{table_name}",
  output_schema_name=f"{catalog}.{schema}",
  time_series=MonitorTimeSeries(timestamp_col=ts, granularities=["30 minutes"]),
  notifications=MonitorNotifications(
        # Notify the given email when a monitoring refresh fails or times out.
        on_failure=MonitorDestination(
            email_addresses=["your_email@domain.com"]
        )
    )
)

Поддерживается не более 5 адресов электронной почты для каждого типа события (например, "on_failure").

Управление доступом к таблицам метрик

Таблицы метрик и панель мониторинга, созданные монитором, принадлежат пользователю, создавшему монитор. С помощью привилегий каталога Unity можно управлять доступом к таблицам метрик. Чтобы предоставить общий доступ к панелям мониторинга в рабочей области, нажмите кнопку "Общий доступ " в правом верхнем углу панели мониторинга.

Удаление монитора

Удаление монитора:

from databricks.sdk import WorkspaceClient

w = WorkspaceClient()
w.quality_monitors.delete(table_name=f"{catalog}.{schema}.{table_name}")

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

Примеры записных книжек

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

Пример записной книжки: профиль временных рядов

Эта записная книжка иллюстрирует создание монитора TimeSeries типов.

Пример записной книжки TimeSeries Lakehouse Monitor

Получить записную книжку

Пример записной книжки: профиль вывода (регрессия)

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

Пример регрессии Монитора вывода Lakehouse

Получить записную книжку

Пример записной книжки: профиль вывода (классификация)

Эта записная книжка иллюстрирует создание монитора InferenceLog типов для проблемы классификации.

Пример записной книжки для классификации Lakehouse Monitor для вывода

Получить записную книжку

Пример записной книжки: профиль моментального снимка

Эта записная книжка иллюстрирует создание монитора Snapshot типов.

Пример записной книжки Snapshot Lakehouse Monitor

Получить записную книжку