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_col
hodnot .
Snapshot
profil
Na rozdíl od TimeSeries
profilu 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_refresh
pří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
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
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
Příklad poznámkového bloku: Profil snímku
Tento poznámkový blok ukazuje, jak vytvořit Snapshot
monitorování typů.