Sdílet prostřednictvím


Vytvoření monitorování pomocí rozhraní API

Tato stránka popisuje, jak vytvořit monitor v Databricks s využitím Databricks SDK a uvádí všechny parameters použité ve voláních rozhraní API. Monitorování můžete také vytvářet a spravovat pomocí rozhraní REST API. Referenční informace najdete v referenčních informacích k sadě SDK monitorování Lakehouse a referenční informace k rozhraní REST API.

Můžete vytvořit monitor na libovolném spravovaném nebo externím Delta table registrovaném v Unity Catalog. V metastoru Unity Catalog lze vytvořit pouze jeden monitor pro libovolné table.

Požadavky

Rozhraní API pro monitorování Lakehouse je integrované do databricks-sdk verze 0.28.0 a vyšší. Pokud chcete použít nejnovější verzi rozhraní API, pomocí následujícího příkazu na začátku poznámkového bloku nainstalujte klienta Pythonu:

%pip install "databricks-sdk>=0.28.0"

Pokud chcete ověřit použití sady Databricks SDK ve vašem prostředí, přečtěte si téma Ověřování.

Typy profilů

Při vytvoření monitoru select následující typ profilu: TimeSeries, InferenceLog nebo Snapshot. Tato část stručně popisuje jednotlivé možnosti. Podrobnosti najdete v referenčních informacích k rozhraní API nebo v referenčních informacích k rozhraní REST API.

Poznámka:

  • Při prvním vytvoření časového řady nebo profilu odvozování monitor analyzuje pouze data z 30 dnů před vytvořením. Po vytvoření monitorování se všechna nová data zpracovávají.
  • Monitory definované na materializovaných views a streamovaných tables nepodporují přírůstkové zpracování.

Tip

U profilů TimeSeries a Inference je osvědčeným postupem povolit změnové datové toky (CDF) na vaší table. Pokud je funkce CDF povolená, zpracovávají se pouze nově připojená data, nikoli znovu zpracovávat celou table každý refresh. Díky tomu je provádění efektivnější a snižuje náklady při zvyšování rozsahu monitorování v mnoha tables.

TimeSeries profil

Profil TimeSeries porovnává distribuce dat v časových oknech. TimeSeries Pro profil musíte zadat následující:

  • Časové razítko column (timestamp_col). Datový typ column pro časová razítka musí být buď TIMESTAMP, nebo typ, který lze převést na časová razítka s použitím funkce to_timestampPySpark.
  • Metriky, které se mají vypočítat pro setgranularities. Dostupné úrovně jsou "5 minut", "30 minut", "1 hodina", "1 den", "1 týden", "2 týdny", "3 týdny", "4 týdny", "1 měsíc", "1 rok".
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

Profil InferenceLog je podobný TimeSeries profilu, ale zahrnuje také metriky kvality modelu. Pro profil InferenceLog se vyžadují následující parameters:

Parametr Popis
problem_type MonitorInferenceLogProblemType.PROBLEM_TYPE_CLASSIFICATION nebo MonitorInferenceLogProblemType.PROBLEM_TYPE_REGRESSION
prediction_col Column obsahující predikované valuesmodelu .
timestamp_col Column obsahující časové razítko žádosti o inferenci.
model_id_col Column obsahující ID modelu použitého k predikci.
granularities Určuje, jak partition data v průběhu času v oknech. Možné values: "5 minut", "30 minut", "1 hodina", "1 den", "1 týden", "2 týdny", "3 týdny", "4 týdny", "1 měsíc", "1 rok".

K dispozici je také volitelný parametr:

Volitelný parametr Popis
label_col Column obsahující základní pravdu pro předpovědi modelu.
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
  )
)

U profilů InferenceLog se řezy automaticky vytvářejí na základě jedinečného values z model_id_col.

Snapshot profil

Na rozdíl od TimeSeriesprofil Snapshot sleduje, jak se v průběhu času mění celý obsah table. Metriky se počítají ze všech dat v tablea monitorují stav table při každé aktualizaci monitoru.

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()
)

Refresh a zobrazení výsledků monitorování

K metrikám refreshtablespoužijte run_refresh. Příklad:

from databricks.sdk import WorkspaceClient

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

Při volání run_refresh z notebooku se vytvoří nebo aktualizuje metrika monitoru tables. Tento výpočet běží na výpočetních prostředcích bez serveru, ne v clusteru, ke kterému je poznámkový blok připojený. Během aktualizace statistik monitorování můžete v poznámkovém bloku dál spouštět příkazy.

Informace o statistikách uložených v metrice tablesnajdete v tématu Monitorování metriky tables metriky tables jsou jednotky Catalogtables. Můžete je dotazovat v poznámkových blocích nebo v Průzkumníku dotazů SQL a zobrazit je v Catalog Exploreru.

Chcete-li zobrazit historii všech aktualizací přidružených k monitoru, použijte list_refreshes.

from databricks.sdk import WorkspaceClient

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

Chcete-li get stav určitého spuštění, který byl zařazen do fronty, spuštěn nebo dokončen, použijte 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
)

Chcete-li zrušit refresh, která je zařazena do fronty nebo spuštěna, využijte 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
)

Zobrazení nastavení monitorování

Nastavení monitorování můžete zkontrolovat pomocí rozhraní API get_monitor.

from databricks.sdk import WorkspaceClient

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

Plán

Abyste mohli spustit monitor set podle plánu, použijte parametr schedulecreate_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",
    )
)

Další informace najdete ve výrazech cron.

Oznámení

Pokud chcete set oznámení monitoru, použijte parametr notificationscreate_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"]
        )
    )
)

Pro každý typ události se podporuje maximálně 5 e-mailových adres (například "on_failure").

Řízení přístupu k metrice tables

Metrika tables a řídicí panel vytvořený monitorem vlastní uživatel, který monitor vytvořil. K řízení přístupu k metrice tablesmůžete použít oprávnění Unity Catalog. Pokud chcete sdílet řídicí panely v pracovním prostoru, použijte tlačítko Sdílet v pravém horním rohu řídicího panelu.

Odstranění monitorování

Odstranění monitoru:

from databricks.sdk import WorkspaceClient

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

Tento příkaz neodstraní profil tables ani řídicí panel vytvořený monitorem. Tyto prostředky musíte odstranit v samostatném kroku nebo je můžete uložit do jiného umístění.

Příklady poznámkových bloků

Následující ukázkové poznámkové bloky ukazují, jak vytvořit monitor, refresh monitorování a prozkoumat metriku, tables vytvoří.

Příklad poznámkového bloku: Profil časové řady

Tento poznámkový blok ukazuje, jak vytvořit TimeSeries monitorování typů.

Ukázkový poznámkový blok TimeSeries Lakehouse Monitor

poznámkového bloku

Příklad poznámkového bloku: Odvozovací profil (regrese)

Tento poznámkový blok ukazuje, jak vytvořit InferenceLog monitorování typů pro problém s regresí.

Ukázkový poznámkový blok regrese inference Lakehouse Monitoru

Get poznámkový blok

Příklad poznámkového bloku: Profil odvozování (klasifikace)

Tento poznámkový blok ukazuje, jak vytvořit InferenceLog monitorování typů pro problém klasifikace.

Ukázkový poznámkový blok klasifikace inference Lakehouse Monitor

poznámkového bloku

Příklad poznámkového bloku: Profil snímku

Tento poznámkový blok ukazuje, jak vytvořit Snapshot monitorování typů.

Ukázkový poznámkový blok služby Snapshot Lakehouse Monitor

Get poznámkového bloku