Создание монитора с помощью 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 день", "1 неделя", "2 недели", "3 недели", "4 недели", "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 день", "1 неделя", "2 недели", "3 недели", "4 недели", "1 месяц", "1 год". |
Существует также необязательный параметр:
Необязательный параметр . | Описание |
---|---|
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
типов.