Skapa en övervakare med hjälp av API:et
Den här sidan beskriver hur du skapar en övervakare i Databricks med hjälp av Databricks SDK och beskriver alla parametrar som används i API-anrop. Du kan också skapa och hantera övervakare med hjälp av REST-API:et. Referensinformation finns i SDK-referensen för Lakehouse-övervakning och REST API-referensen.
Du kan skapa en övervakare på alla hanterade eller externa Delta-tabeller som registrerats i Unity Catalog. Endast en monitor kan skapas i ett Unity Catalog-metastore för en given tabell.
Krav
Lakehouse Monitoring-API:et är inbyggt i databricks-sdk
0.28.0 och senare. Om du vill använda den senaste versionen av API:et använder du följande kommando i början av notebook-filen för att installera Python-klienten:
%pip install "databricks-sdk>=0.28.0"
Information om hur du autentiserar för att använda Databricks SDK i din miljö finns i Autentisering.
Profiltyper
När du skapar en övervakare väljer du någon av följande profiltyper: TimeSeries, InferenceLog eller Snapshot. I det här avsnittet beskrivs kort varje alternativ. Mer information finns i API-referensen eller REST API-referensen.
Kommentar
- När du först skapar en tidsserie- eller slutsatsdragningsprofil analyserar övervakaren endast data från de 30 dagarna innan den skapas. När övervakaren har skapats bearbetas alla nya data.
- Övervakare som definierats för materialiserade vyer och strömmande tabeller stöder inte inkrementell bearbetning.
Dricks
För TimeSeries
- och Inference
-profiler är det en bra idé att aktivera ändringsdataflöde (CDF) i tabellen. När CDF är aktiverat bearbetas endast nyligen tillagda data i stället för att bearbeta hela tabellen igen varje uppdatering. Detta gör utförandet mer effektivt och minskar kostnaderna när du skalar upp övervakningen över många tabeller.
TimeSeries
profil
En TimeSeries
profil jämför datadistributioner mellan tidsfönster. För en TimeSeries
profil måste du ange följande:
- En tidsstämpelkolumn (
timestamp_col
). Datatypen för tidsstämpelkolumnen måste vara antingenTIMESTAMP
eller en typ som kan konverteras till tidsstämplar med funktionento_timestamp
PySpark. - Uppsättningen med
granularities
att beräkna metrik över. Tillgängliga kornigheter är "5 minuter", "30 minuter", "1 timme", "1 dag", "1 vecka", "2 veckor", "3 veckor", "4 veckor", "1 månad", "1 år".
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
profil
En InferenceLog
profil liknar en TimeSeries
profil men innehåller även modellkvalitetsmått. För en InferenceLog
profil krävs följande parametrar:
Parameter | Description |
---|---|
problem_type |
MonitorInferenceLogProblemType.PROBLEM_TYPE_CLASSIFICATION eller MonitorInferenceLogProblemType.PROBLEM_TYPE_REGRESSION |
prediction_col |
Kolumn som innehåller modellens förutsagda värden. |
timestamp_col |
Kolumn som innehåller tidsstämpeln för inferensbegäran. |
model_id_col |
Kolumn som innehåller ID:t för modellen som används för förutsägelse. |
granularities |
Avgör hur data ska partitioneras i fönster över tid. Möjliga värden: "5 minuter", "30 minuter", "1 timme", "1 dag", "1 vecka", "2 veckor", "3 veckor", "4 veckor", "1 månad", "1 år". |
Det finns också en valfri parameter:
Valfri parameter | Description |
---|---|
label_col |
Kolumn som innehåller grundsanningen för modellförutsägelser. |
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
)
)
För InferenceLog-profiler skapas sektorer automatiskt baserat på de distinkta värdena för model_id_col
.
Snapshot
profil
Till skillnad från TimeSeries
övervakar en Snapshot
profil hur hela innehållet i tabellen ändras över tid. Metrik beräknas över alla data i tabellen och kontrollerar tabellens tillstånd varje gång övervakningen uppdateras.
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()
)
Uppdatera och visa övervakningsresultat
Om du vill uppdatera måtttabeller använder du run_refresh
. Till exempel:
from databricks.sdk import WorkspaceClient
w = WorkspaceClient()
w.quality_monitors.run_refresh(
table_name=f"{catalog}.{schema}.{table_name}"
)
När du anropar run_refresh
från en anteckningsbok skapas eller uppdateras övervakningsstatistiktabellerna. Den här beräkningen körs på serverlös beräkning, inte på klustret som notebook-filen är kopplad till. Du kan fortsätta att köra kommandon i notebook-filen medan övervakningsstatistiken uppdateras.
Information om den statistik som lagras i måtttabeller finns i Övervaka måtttabeller Måtttabeller är Unity Catalog-tabeller. Du kan fråga dem i notebook-filer eller i SQL-frågeutforskaren och visa dem i Katalogutforskaren.
Om du vill visa historiken för alla uppdateringar som är associerade med en övervakare använder du list_refreshes
.
from databricks.sdk import WorkspaceClient
w = WorkspaceClient()
w.quality_monitors.list_refreshes(
table_name=f"{catalog}.{schema}.{table_name}"
)
Om du vill hämta status för en specifik körning som har köats, körts eller slutförts använder du 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
)
Om du vill avbryta en uppdatering som är i kö eller körs använder du 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
)
Visa övervakningsinställningar
Du kan granska övervakningsinställningarna med hjälp av API get_monitor
:et .
from databricks.sdk import WorkspaceClient
w = WorkspaceClient()
w.quality_monitors.get(f"{catalog}.{schema}.{table_name}")
Schema
Om du vill konfigurera en övervakare som ska köras enligt ett schema använder du parametern schedule
för 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",
)
)
Mer information finns i cron-uttryck .
Meddelanden
Om du vill konfigurera meddelanden för en övervakare använder du parametern notifications
för 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"]
)
)
)
Högst 5 e-postadresser stöds per händelsetyp (till exempel "on_failure").
Kontrollera åtkomsten till måtttabeller
Måtttabellerna och instrumentpanelen som skapats av en monitor ägs av den användare som skapade monitorn. Du kan använda Behörigheter för Unity Catalog för att styra åtkomsten till måtttabeller. Om du vill dela instrumentpaneler på en arbetsyta använder du knappen Dela längst upp till höger på instrumentpanelen.
Ta bort en övervakare
Så här tar du bort en övervakare:
from databricks.sdk import WorkspaceClient
w = WorkspaceClient()
w.quality_monitors.delete(table_name=f"{catalog}.{schema}.{table_name}")
Det här kommandot tar inte bort profiltabellerna och instrumentpanelen som skapats av övervakaren. Du måste ta bort dessa tillgångar i ett separat steg, eller så kan du spara dem på en annan plats.
Exempelnotebook-filer
Följande exempel på notebook-filer visar hur du skapar en övervakare, uppdaterar övervakaren och undersöker de måtttabeller som skapas.
Notebook-exempel: Tidsserieprofil
Den här notebook-filen visar hur du skapar en TimeSeries
typövervakare.
TimeSeries Lakehouse Monitor- exempelanteckningsbok
Notebook-exempel: Slutsatsdragningsprofil (regression)
Den här notebook-filen visar hur du skapar en InferenceLog
typövervakare för ett regressionsproblem.
Inference Lakehouse Monitor regressionsexempel notebook
Notebook-exempel: Slutsatsdragningsprofil (klassificering)
Den här notebook-filen visar hur du skapar en InferenceLog
typövervakare för ett klassificeringsproblem.
Inference Lakehouse Monitor–klassificeringsexempel notebook
Notebook-exempel: Profil för ögonblicksbild
Den här notebook-filen visar hur du skapar en Snapshot
typövervakare.