API kullanarak izleyici oluşturma
Bu sayfada Databricks SDK'sını kullanarak Databricks'te bir izleyicinin nasıl oluşturulacağı açıklanır ve API çağrılarında kullanılan tüm parametreler açıklanır. REST API'yi kullanarak izleyiciler oluşturabilir ve yönetebilirsiniz. Başvuru bilgileri için bkz. Lakehouse izleme SDK'sı başvurusu ve REST API başvurusu.
Unity Kataloğu'nda kayıtlı herhangi bir yönetilen veya dış Delta tablosunda izleyici oluşturabilirsiniz. Herhangi bir tablo için Unity Kataloğu meta veri deposunda yalnızca tek bir monitör oluşturulabilir.
Gereksinimler
Lakehouse İzleme API'si 0.28.0 ve üzeri bir modelde databricks-sdk
yerleşiktir. API'nin en son sürümünü kullanmak için not defterinizin başındaki aşağıdaki komutu kullanarak Python istemcisini yükleyin:
%pip install "databricks-sdk>=0.28.0"
Ortamınızda Databricks SDK'sını kullanmak üzere kimlik doğrulaması yapmak için bkz . Kimlik doğrulaması.
Profil türleri
Bir monitör oluşturduğunuzda, şu profil türlerinden birini seçersiniz: TimeSeries, InferenceLog veya Snapshot. Bu bölümde her seçenek kısaca açıklanmaktadır. Ayrıntılar için bkz . API başvurusu veya REST API başvurusu.
Not
- İlk kez bir zaman serisi veya çıkarım profili oluşturduğunuzda, izleyici yalnızca oluşturulmadan önceki 30 güne ait verileri analiz eder. İzleyici oluşturulduktan sonra tüm yeni veriler işlenir.
- Gerçekleştirilmiş görünümlerde ve akış tablolarında tanımlanan izleyiciler artımlı işlemeyi desteklemez.
İpucu
ve Inference
profilleri içinTimeSeries
, tablonuzda değişiklik veri akışını (CDF) etkinleştirmek en iyi yöntemdir. CDF etkinleştirildiğinde, her yenilemede tablonun tamamını yeniden işlemek yerine yalnızca yeni eklenen veriler işlenir. Bu, yürütmeyi daha verimli hale getirir ve izlemeyi birçok tabloda ölçeklendirdikçe maliyetleri azaltır.
TimeSeries
profil
Profil TimeSeries
, zaman pencerelerindeki veri dağıtımlarını karşılaştırır. Profil için TimeSeries
aşağıdakileri sağlamanız gerekir:
- Zaman damgası sütunu (
timestamp_col
). Zaman damgası sütunu veri türü veyaTIMESTAMP
PySpark işlevi kullanılarakto_timestamp
zaman damgalarına dönüştürülebilecek bir tür olmalıdır. - Ölçümlerin
granularities
hesaplanacağı küme. Kullanılabilir ayrıntı düzeyleri şunlardır: "5 dakika", "30 dakika", "1 saat", "1 gün", "n hafta/hafta", "1 ay", "1 yıl".
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
, profile TimeSeries
benzer ancak model kalitesi ölçümlerini de içerir. Bir InferenceLog
profil için aşağıdaki parametreler gereklidir:
Parametre | Açıklama |
---|---|
problem_type |
MonitorInferenceLogProblemType.PROBLEM_TYPE_CLASSIFICATION veya MonitorInferenceLogProblemType.PROBLEM_TYPE_REGRESSION |
prediction_col |
Modelin tahmin edilen değerlerini içeren sütun. |
timestamp_col |
Çıkarım isteğinin zaman damgasını içeren sütun. |
model_id_col |
Tahmin için kullanılan modelin kimliğini içeren sütun. |
granularities |
Zaman içinde pencerelerdeki verilerin nasıl bölümleneceğini belirler. Olası değerler: "5 dakika", "30 dakika", "1 saat", "1 gün", "n hafta", "1 ay", "1 yıl". |
İsteğe bağlı bir parametre de vardır:
İsteğe bağlı parametre | Açıklama |
---|---|
label_col |
Model tahminleri için temel gerçeği içeren sütun. |
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
)
)
InferenceLog profilleri için dilimler, benzersiz değerlerine model_id_col
göre otomatik olarak oluşturulur.
Snapshot
profil
yerine TimeSeries
, bir Snapshot
profil tablonun tüm içeriğinin zaman içinde nasıl değiştiğini izler. Ölçümler tablodaki tüm veriler üzerinde hesaplanır ve izleyici her yenilendiğinde tablo durumunu izler.
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()
)
İzleyici sonuçlarını yenileme ve görüntüleme
Ölçüm tablolarını yenilemek için kullanın run_refresh
. Örneğin:
from databricks.sdk import WorkspaceClient
w = WorkspaceClient()
w.quality_monitors.run_refresh(
table_name=f"{catalog}.{schema}.{table_name}"
)
Not defterinden arama run_refresh
yaptığınızda, monitör ölçüm tabloları oluşturulur veya güncelleştirilir. Bu hesaplama, not defterinin bağlı olduğu kümede değil sunucusuz işlemde çalışır. İzleme istatistikleri güncelleştirilirken not defterinde komut çalıştırmaya devam edebilirsiniz.
Ölçüm tablolarında depolanan istatistikler hakkında bilgi için bkz . Ölçüm tablolarını izleme Ölçüm tabloları Unity Kataloğu tablolarıdır. Bunları not defterlerinde veya SQL sorgu gezgininde sorgulayabilir ve Katalog Gezgini'nde görüntüleyebilirsiniz.
Bir monitörle ilişkili tüm yenilemelerin geçmişini görüntülemek için kullanın list_refreshes
.
from databricks.sdk import WorkspaceClient
w = WorkspaceClient()
w.quality_monitors.list_refreshes(
table_name=f"{catalog}.{schema}.{table_name}"
)
Kuyruğa alınmış, çalıştırılmış veya tamamlanmış belirli bir çalıştırmanın durumunu almak için kullanın 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
)
Kuyruğa alınan veya çalışan bir yenilemeyi iptal etmek için kullanın 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
)
Monitör ayarlarını görüntüleme
API'sini get_monitor
kullanarak izleme ayarlarını gözden geçirebilirsiniz.
from databricks.sdk import WorkspaceClient
w = WorkspaceClient()
w.quality_monitors.get(f"{catalog}.{schema}.{table_name}")
Zamanla
Zamanlanmış olarak çalışacak bir izleyici ayarlamak için parametresini schedule
create_monitor
kullanın:
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",
)
)
Daha fazla bilgi için bkz . cron ifadeleri .
Notifications
Bir izleyiciye yönelik bildirimleri ayarlamak için parametresini notifications
create_monitor
kullanın:
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"]
)
)
)
Olay türü başına en fazla 5 e-posta adresi desteklenir (örneğin, "on_failure").
Ölçüm tablolarına erişimi denetleme
Bir monitör tarafından oluşturulan ölçüm tabloları ve pano, izleyiciyi oluşturan kullanıcıya aittir. Unity Kataloğu ayrıcalıklarını kullanarak ölçüm tablolarına erişimi denetleyebilirsiniz. Çalışma alanında panoları paylaşmak için panonun sağ üst kısmındaki Paylaş düğmesini kullanın.
Monitör silme
Bir izleyiciyi silmek için:
from databricks.sdk import WorkspaceClient
w = WorkspaceClient()
w.quality_monitors.delete(table_name=f"{catalog}.{schema}.{table_name}")
Bu komut, profil tablolarını ve izleyici tarafından oluşturulan panoyu silmez. Bu varlıkları ayrı bir adımda silmeniz gerekir veya bunları farklı bir konuma kaydedebilirsiniz.
Örnek not defterleri
Aşağıdaki örnek not defterleri monitör oluşturmayı, monitörü yenilemeyi ve oluşturduğu ölçüm tablolarını incelemeyi gösterir.
Not defteri örneği: Zaman serisi profili
Bu not defteri, tür TimeSeries
izleyicisi oluşturmayı gösterir.
TimeSeries Lakehouse İzleyici örnek not defteri
Not defteri örneği: Çıkarım profili (regresyon)
Bu not defteri, bir regresyon sorunu için tür izleyicisi oluşturmayı InferenceLog
gösterir.
Çıkarım Lakehouse İzleyici regresyon örneği not defteri
Not defteri örneği: Çıkarım profili (sınıflandırma)
Bu not defteri, sınıflandırma sorunu için tür izleyicisi oluşturmayı InferenceLog
gösterir.
Inference Lakehouse Monitor sınıflandırma örneği not defteri
Not defteri örneği: Anlık görüntü profili
Bu not defteri, tür Snapshot
izleyicisi oluşturmayı gösterir.