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 funkceto_timestamp
PySpark. - Metriky, které se mají vypočítat pro set
granularities
. 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 TimeSeries
profil 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 schedule
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 set oznámení monitoru, použijte parametr notifications
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 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
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ů.