Sdílet prostřednictvím


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

Tato stránka popisuje, jak vytvořit monitorování v Databricks pomocí sady Databricks SDK a popisuje všechny parametry používané 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.

Monitorování můžete vytvořit na libovolné spravované nebo externí tabulce Delta zaregistrované v katalogu Unity. V metastoru katalogu Unity lze vytvořit pouze jeden monitor pro libovolnou tabulku.

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 vytváření monitorování vyberete jeden z následujících typů profilů: 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í.
  • Monitorování definovaná na materializovaných zobrazeních a tabulkách streamování nepodporují přírůstkové zpracování.

Tip

V TimeSeries případě a Inference profilech je osvědčeným postupem povolit změnu datového kanálu (CDF) v tabulce. Pokud je funkce CDF povolená, zpracovávají se pouze nově připojená data místo opětovného zpracování celé tabulky při každé aktualizaci. Díky tomu je provádění efektivnější a snižuje náklady při škálování monitorování napříč mnoha tabulkami.

TimeSeries profil

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

  • Sloupec časového razítka (timestamp_col). Datový typ sloupce časového razítka musí být buď TIMESTAMP nebo typ, který lze převést na časová razítka pomocí to_timestamp funkce PySpark.
  • Sada, nad granularities kterou se mají vypočítat metriky. Dostupné úrovně jsou "5 minut", "30 minut", "1 hodina", "1 den", "n týdnů", "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. InferenceLog Pro profil jsou vyžadovány následující parametry:

Parametr Popis
problem_type MonitorInferenceLogProblemType.PROBLEM_TYPE_CLASSIFICATION nebo MonitorInferenceLogProblemType.PROBLEM_TYPE_REGRESSION
prediction_col Sloupec obsahující predikované hodnoty modelu
timestamp_col Sloupec obsahující časové razítko požadavku na odvozování
model_id_col Sloupec obsahující ID modelu použitého k predikci
granularities Určuje způsob rozdělení dat v oknech v čase. Možné hodnoty: "5 minut", "30 minut", "1 hodina", "1 den", "n týdnů", "1 měsíc", "1 rok".

K dispozici je také volitelný parametr:

Volitelný parametr Popis
label_col Sloupec 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
  )
)

V případě profilů InferenceLog se řezy automaticky vytvoří na základě jedinečných model_id_colhodnot .

Snapshot profil

Na rozdíl od TimeSeriesprofilu Snapshot sleduje, jak se celý obsah tabulky v průběhu času mění. Metriky se počítají přes všechna data v tabulce a monitorují stav tabulky při každé aktualizaci monitorování.

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

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

K aktualizaci tabulek metrik použ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 poznámkového bloku se tabulky metrik monitorování vytvoří nebo aktualizují. 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, které jsou uloženy v tabulkách metrik, naleznete v tématu Monitorování tabulek metrik Metric jsou tabulky Unity Catalog. Můžete se na ně dotazovat v poznámkových blocích nebo v Průzkumníku dotazů SQL a zobrazit je v Průzkumníku katalogu.

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 získat stav konkrétního spuštění, které bylo zařazeno do fronty, spuštěno nebo dokončeno, 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 aktualizaci, která je zařazena do fronty nebo spuštěna, použijte cancel_refreshpříkaz .

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

Pokud chcete nastavit monitorování tak, aby běžel podle plánu, použijte schedule parametr 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",
    )
)

Další informace najdete ve výrazech cron.

Oznámení

Pokud chcete nastavit oznámení pro monitorování, použijte notifications parametr 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"]
        )
    )
)

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

Řízení přístupu k tabulkám metrik

Tabulky metrik a řídicí panel vytvořené monitorováním vlastní uživatel, který monitor vytvořil. Oprávnění katalogu Unity můžete použít k řízení přístupu k tabulkám metrik. 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í tabulky profilu a řídicí panel vytvořený monitorováním. 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, aktualizovat monitor a prozkoumat tabulky metrik, které 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

Získat poznámkový blok

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

Získat 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

Získat poznámkový blok

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

Získat poznámkový blok