Een monitor maken met behulp van de API
Op deze pagina wordt beschreven hoe u een monitor maakt in Databricks met behulp van de Databricks SDK en alle parameters beschrijft die worden gebruikt in API-aanroepen. U kunt ook monitors maken en beheren met behulp van de REST API. Zie de naslaginformatie over de Bewakings-SDK van Lakehouse en de REST API-verwijzing.
U kunt een monitor maken op elke beheerde of externe Delta-tabel die is geregistreerd in Unity Catalog. Er kan slechts één monitor worden gemaakt in een Unity Catalog-metastore voor elke tabel.
Vereisten
De Lakehouse Monitoring-API is ingebouwd in databricks-sdk
0.28.0 en hoger. Als u de meest recente versie van de API wilt gebruiken, gebruikt u de volgende opdracht aan het begin van uw notebook om de Python-client te installeren:
%pip install "databricks-sdk>=0.28.0"
Zie Verificatie om te verifiëren voor het gebruik van de Databricks SDK in uw omgeving.
Profieltypen
Wanneer u een monitor maakt, selecteert u een van de volgende profieltypen: TimeSeries, InferenceLog of Snapshot. In deze sectie wordt elke optie kort beschreven. Zie de API-verwijzing of de REST API-verwijzing voor meer informatie.
Notitie
- Wanneer u voor het eerst een tijdreeks- of deductieprofiel maakt, analyseert de monitor alleen gegevens van de 30 dagen voorafgaand aan het maken ervan. Nadat de monitor is gemaakt, worden alle nieuwe gegevens verwerkt.
- Monitors die zijn gedefinieerd voor gerealiseerde weergaven en streamingtabellen bieden geen ondersteuning voor incrementele verwerking.
Tip
Voor TimeSeries
en Inference
profielen is het een best practice om change data feed (CDF) in te schakelen in uw tabel. Wanneer CDF is ingeschakeld, worden alleen nieuw toegevoegde gegevens verwerkt, in plaats van dat de hele tabel elke vernieuwing opnieuw wordt verwerkt. Dit maakt de uitvoering efficiënter en verlaagt de kosten wanneer u bewaking in veel tabellen schaalt.
TimeSeries
profiel
Een TimeSeries
profiel vergelijkt gegevensdistributies in tijdvensters. Voor een TimeSeries
profiel moet u het volgende opgeven:
- Een tijdstempelkolom (
timestamp_col
). Het gegevenstype van de tijdstempelkolom moet ofwelTIMESTAMP
een type zijn dat kan worden geconverteerd naar tijdstempels met behulp van deto_timestamp
functie PySpark. - De set waarvoor
granularities
u metrische gegevens wilt berekenen. Beschikbare granulariteiten zijn '5 minuten', '30 minuten', '1 uur', '1 dag', '1 week', '2 weken', '3 weken', '4 weken', '1 maand', '1 jaar'.
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
profiel
Een InferenceLog
profiel is vergelijkbaar met een TimeSeries
profiel, maar bevat ook metrische gegevens over modelkwaliteit. Voor een InferenceLog
profiel zijn de volgende parameters vereist:
Parameter | Description |
---|---|
problem_type |
MonitorInferenceLogProblemType.PROBLEM_TYPE_CLASSIFICATION of MonitorInferenceLogProblemType.PROBLEM_TYPE_REGRESSION |
prediction_col |
Kolom met de voorspelde waarden van het model. |
timestamp_col |
Kolom met de tijdstempel van de deductieaanvraag. |
model_id_col |
Kolom met de id van het model dat wordt gebruikt voor voorspelling. |
granularities |
Bepaalt hoe de gegevens in vensters in de tijd moeten worden gepartitioneren. Mogelijke waarden: "5 minuten", "30 minuten", "1 uur", "1 dag", "1 week", "2 weken", "3 weken", "4 weken", "1 maand", "1 jaar". |
Er is ook een optionele parameter:
Optionele parameter | Description |
---|---|
label_col |
Kolom met de grondwaar voor modelvoorspellingen. |
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
)
)
Voor InferenceLog-profielen worden segmenten automatisch gemaakt op basis van de afzonderlijke waarden van model_id_col
.
Snapshot
profiel
In tegenstelling tot TimeSeries
, controleert een Snapshot
profiel hoe de volledige inhoud van de tabel na verloop van tijd verandert. Metrische gegevens worden berekend over alle gegevens in de tabel en bewaken de tabelstatus telkens wanneer de monitor wordt vernieuwd.
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()
)
Monitorresultaten vernieuwen en weergeven
Als u tabellen met metrische gegevens wilt vernieuwen, gebruikt u run_refresh
. Voorbeeld:
from databricks.sdk import WorkspaceClient
w = WorkspaceClient()
w.quality_monitors.run_refresh(
table_name=f"{catalog}.{schema}.{table_name}"
)
Wanneer u vanuit een notebook belt run_refresh
, worden de metrische bewakingstabellen gemaakt of bijgewerkt. Deze berekening wordt uitgevoerd op serverloze berekeningen, niet op het cluster waaraan het notebook is gekoppeld. U kunt opdrachten blijven uitvoeren in het notebook terwijl de monitorstatistieken worden bijgewerkt.
Zie Metrische tabellen bewaken voor metrische tabellen zijn Unity Catalog-tabellen voor informatie over de statistieken die zijn opgeslagen in metrische tabellen. U kunt query's uitvoeren in notebooks of in de SQL-queryverkenner en deze weergeven in Catalog Explorer.
Als u de geschiedenis wilt weergeven van alle vernieuwingen die zijn gekoppeld aan een monitor, gebruikt u list_refreshes
.
from databricks.sdk import WorkspaceClient
w = WorkspaceClient()
w.quality_monitors.list_refreshes(
table_name=f"{catalog}.{schema}.{table_name}"
)
Als u de status van een specifieke uitvoering wilt ophalen die in de wachtrij is geplaatst, wordt uitgevoerd of voltooid, gebruikt u 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
)
Als u een vernieuwing wilt annuleren die in de wachtrij staat of wordt uitgevoerd, gebruikt u 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
)
Monitorinstellingen weergeven
U kunt de controle-instellingen controleren met behulp van de API get_monitor
.
from databricks.sdk import WorkspaceClient
w = WorkspaceClient()
w.quality_monitors.get(f"{catalog}.{schema}.{table_name}")
Schema
Als u een monitor wilt instellen die op een geplande basis moet worden uitgevoerd, gebruikt u de schedule
parameter van 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",
)
)
Zie cron-expressies voor meer informatie.
Meldingen
Als u meldingen voor een monitor wilt instellen, gebruikt u de notifications
parameter van 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"]
)
)
)
Er worden maximaal 5 e-mailadressen ondersteund per gebeurtenistype (bijvoorbeeld 'on_failure').
Toegang tot metrische tabellen beheren
De metrische tabellen en het dashboard die door een monitor zijn gemaakt, zijn eigendom van de gebruiker die de monitor heeft gemaakt. U kunt Unity Catalog-bevoegdheden gebruiken om de toegang tot metrische tabellen te beheren. Als u dashboards in een werkruimte wilt delen, gebruikt u de knop Delen in de rechterbovenhoek van het dashboard.
Een monitor verwijderen
Een monitor verwijderen:
from databricks.sdk import WorkspaceClient
w = WorkspaceClient()
w.quality_monitors.delete(table_name=f"{catalog}.{schema}.{table_name}")
Met deze opdracht worden de profieltabellen en het dashboard dat door de monitor is gemaakt, niet verwijderd. U moet deze assets in een afzonderlijke stap verwijderen of u kunt ze opslaan op een andere locatie.
Voorbeeldnotebooks
In de volgende voorbeeldnotebooks ziet u hoe u een monitor maakt, de monitor vernieuwt en de metrische tabellen bekijkt die worden gemaakt.
Voorbeeld van notitieblok: Tijdreeksprofiel
In dit notebook ziet u hoe u een TimeSeries
typemonitor maakt.
TimeSeries Lakehouse Monitor-voorbeeldnotitieblok
Notebook-voorbeeld: Deductieprofiel (regressie)
In dit notebook ziet u hoe u een InferenceLog
typemonitor maakt voor een regressieprobleem.
Voorbeeldnotebook voor regressie van Inference Lakehouse Monitor
Notebook-voorbeeld: Deductieprofiel (classificatie)
In dit notebook ziet u hoe u een InferenceLog
typemonitor maakt voor een classificatieprobleem.
Voorbeeldnotitieblok voor classificatie van Lakehouse Monitor
Voorbeeld van notitieblok: Momentopnameprofiel
In dit notebook ziet u hoe u een Snapshot
typemonitor maakt.