Delen via


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 ofwel TIMESTAMP een type zijn dat kan worden geconverteerd naar tijdstempels met behulp van de to_timestampfunctie 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 downloaden

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 downloaden

Notebook-voorbeeld: Deductieprofiel (classificatie)

In dit notebook ziet u hoe u een InferenceLog typemonitor maakt voor een classificatieprobleem.

Voorbeeldnotitieblok voor classificatie van Lakehouse Monitor

Notebook downloaden

Voorbeeld van notitieblok: Momentopnameprofiel

In dit notebook ziet u hoe u een Snapshot typemonitor maakt.

Voorbeeldnotitieblok snapshot Lakehouse Monitor

Notebook downloaden