Überwachen der Verwendung von Unity Catalog-Ressourcenkontingenten

In diesem Artikel wird beschrieben, wie Sie die Verwendung von sicherungsfähigen Unity Catalog-Objekten überwachen, die Ressourcenkontingenten unterliegen.

Sie können die Unity Catalog-Ressourcenkontingente-APIs verwenden, um die Verwendung nachzuverfolgen. Einige Limits können auf Antrag erhöht werden, andere sind fest. Um Unterbrechungen zu vermeiden, planen Sie im Voraus und kontaktieren Sie Ihr Azure Databricks-Kundenteam, wenn Sie erwarten, dass Sie Ihre Ressourcenquoten überschreiten.

Was sind Ressourcenkontingente für Unity Catalog?

Unity Catalog erzwingt Ressourcenkontingente für alle sicherungsfähigen von Unity Catalog verwalteten Objekte. Diese Kontingente werden in den Ressourcengrenzwerten aufgeführt. Sie werden in diesem Artikel als Kontingente für Clean Rooms, Delta Sharing, Marketplace und Unity Catalog identifiziert.

Jedes Kontingent wird als eine Anzahl von Objekten pro übergeordnetem Objekt (oder Bereich) definiert. Beispielsweise 10.000 Tabellen pro Schema oder 1.000.000 Tabellen pro Metastore.

Abfrage der Ressourcenkontingente für Ihre Nutzung

Verwenden Sie zum proaktiven Überwachen der Verwendung von Ressourcenkontingenten die REST-APIs des Unity Catalog für Ressourcenkontingente:

  • GetQuota ruft die Kontingentverwendung für einen Kontingenttyp ab, der als Anzahl untergeordneter Objekte pro übergeordnetem Objekt definiert ist (z. B. Tabellen pro Metastore).
  • ListQuotas ruft alle Kontingentwerte unter dem Ziel-Metastore ab, die standardmäßig paginiert sind.

Beide APIs geben Informationen in Form eines quota_info-Objekts zurück, das die folgenden Felder enthält. Sie verwenden auch einige dieser Felder, wenn Sie eine Anforderung mithilfe der GetQuota-API durchführen:

  • parent_securable_type: Typ des übergeordneten Objekts. Beispiel: Für die Anzahl der Tabellen pro Schema ist parent_securable_type schema.

    Hinweis

    Legen Sie für Kontingente, in denen der übergeordnete Typ ein registriertes Modell ist parent_securable_type auf function fest.

  • parent_full_name: Vollständiger Name des übergeordneten Kontingents. Beispiel: das main.default-Schema. Wenn das übergeordnete Element ein Metastore ist, verwenden Sie die Metastore-ID in Ihrer Anforderung.

  • quota_name: Name des Kontingents. Dies ist das untergeordnete Objekt (Tabelle, Schema, Freigabe usw.), dem -quota als Suffix dient. Beispiel: table-quota.

  • quota_count: Die neueste Nutzungsanzahl. Beispiel: 33-Tabellen pro Schema.

  • quota_limit: Der Kontingentgrenzwert zum Zeitpunkt der Berechnung der Kontingentanzahl. Beispiel: 10000-Tabellen pro Schema.

  • last_refreshed_at: Das letzte Mal, als die Kontingentanzahl aktualisiert wurde. Dies wird als Unix-Epochen-Zeitstempel angezeigt. Sie können den Zeitstempel mithilfe von Online-Tools wie Epoch Converter in ein lesbares Format konvertieren.

Die ListQuotas-API gibt auch ein Seitentoken in der Antwort zurück, wenn die aktuelle Antwort nicht alle Ergebnisse zurückgibt.

API der Autorisierung und Authentifizierung

Nur Kontoadministratoren können die Ressourcenkontingent-APIs aufrufen.

Der Kontoadministrator, der die APIs aufruft, sollte entweder die OAuth-Benutzer-zu-Computer (U2M)-Authentifizierung (für Benutzer oder Gruppen) oder die OAuth-Computer-zu-Computer (M2M)-Authentifizierung verwenden (wenn der Kontoadministrator ein Dienstprinzipal ist). Siehe Authentifizierung des Zugriffs auf Azure Databricks mit einem Benutzerkonto mithilfe von OAuth (OAuth U2M) oder Authentifizierung des Zugriffs bei Azure Databricks mit einem Dienstprinzipal unter Verwendung von OAuth (OAuth M2M). Databricks-generierte persönliche Zugriffstoken (PATs) sind auch eine Option, werden aber nicht empfohlen.

Verwenden der GetQuota-API zum Abrufen von Kontingentnutzungswerten für einen bestimmten Kontingenttyp

Verwenden Sie die GetQuota-API, um Nutzungsinformationen für ein einzelnes Ressourcenkontingent abzurufen, wie durch eine untergeordnete-übergeordnete Kopplung definiert.

Methode: GET

Pfad: /unity-catalog/resource-quotas/{parent_securable_type}/{parent_full_name}/{quota_name}

Text-Parameter: Parameterbeschreibungen finden Sie unter Abfragen Ihrer Verwendung anhand von Ressourcenkontingenten.

Die API-Referenz finden Sie unter GET /unity-catalog/resource-quotas/.

GetQuota-Zählungen sind auf 30 Minuten nach dem letzten Erstellungsvorgang genau, der unter dem übergeordneten Kontingent ausgeführt wurde. Die Zählung ist möglicherweise veraltet, wenn nur Löschvorgänge ausgeführt wurden, da Unity Catalog die Kontingentanzahl nur während der Ressourcenerstellung aktualisiert. Das Aufrufen von GetQuota löst eine Aktualisierung der Kontingentanzahl aus, wenn sie veraltet, der Trigger jedoch asynchron ist und neue Anzahlen im ersten Aufruf möglicherweise nicht zurückgegeben werden.

Anforderungsbeispiel

Python-Beispiel, das die Anzahl der Schemas anfordert, die im main-Katalog im Metastore erstellt wurden, der dem Arbeitsbereich zugeordnet ist:

import requests
headers = {'Authentication': 'Bearer <OAuthtoken>'}
r = requests.get('https://example-workspace.databricks.com/api/2.1/unity-catalog/resource-quotas/catalog/main/schema-quota', headers=headers)
print(r.text)

Curl-Beispiel, das die gleichen Aktionen ausführt:

$ curl -X GET -H "Authentication: Bearer $OAUTH_TOKEN" \
"https://example-workspace.databricks.com/api/2.1/unity-catalog/resource-quotas/catalog/main/schema-quota"

Beispielantwort

Antwort, die 2691-Schemas mit dem Grenzwert von 10.000 Schema pro Metastore anzeigt:

{
  "quota_info": {
    "parent_securable_type": "CATALOG",
    "parent_full_name": "main",
    "quota_name": "schema-quota",
    "quota_count": 2691,
    "quota_limit": 10000,
    "last_refreshed_at": 1722559381517
  }
}

Verwenden der ListQuotas-API zum Abrufen von Nutzungsdaten für alle Kontingenttypen in einem Metastore

Verwenden Sie die ListQuotas-API, um Nutzungsdaten für alle Kontingenttypen in einem Metastore abzurufen.

Methode: GET

Pfad: /unity-catalog/resource-quotas/all-resource-quotas

Textparameter:

  • max_results: Anzahl der zurückzugebenden Ergebnisse. Der Maximalwert ist 500. Der Standardwert ist 100.
  • page_token: Seiten-Token aus der vorherigen Anforderung, um die nächste Seite der Ergebnisse abzurufen.

Die API-Referenz finden Sie unter ABRUFEN /unity-catalog/resource-quotas/all-resource-quotas.

Anders als GetQuotas, hat ListQuotas keine SLA für die Aktualität der Anzahl. Es löst auch keine Aktualisierungen der Kontingentanzahl aus. Verwenden Sie für maximale Genauigkeit die GetQuota-API.

Anforderungsbeispiel

Python-Beispiel, das Kontingentanzahl für alle Objekte im Metastore anfordert, die an den Arbeitsbereich angefügt sind, wobei 5 Ergebnisse angegeben werden, die pro Seite zurückgegeben werden sollen:

import requests
headers = {'Authentication': 'Bearer <OAuthtoken>'}
next_page = None
max_results = 5
results = []

while True:
  payload = {'max_results': max_results, 'page_token': next_page}
  r = requests.get(
'https://example-workspace.databricks.com/api/2.1/unity-catalog/resource-quotas/all-resource-quotas', headers=headers, params=payload).json()
  results.extend(r["quotas"])
  if "next_page_token" not in r: break
  next_page = r["next_page_token"]

results

Curl-Beispiel, das die gleichen Aktionen ausführt:

$ curl -X GET -H "Authentication: Bearer $OAUTH_TOKEN" \
-d '{"max_results": 5}' "https://example-workspace.databricks.com/api/2.1/unity-catalog/resource-quotas/all-resource-quotas"

Beispielantwort

Antwort, die eine Seite mit 5 Kontingentzählungen anzeigt:

"quotas":[
   {
      "parent_securable_type":"CATALOG",
      "parent_full_name":"auto_maintenance",
      "quota_name":"schema-quota",
      "quota_count":15,
      "quota_limit":10000,
      "last_refreshed_at":1707272498713
   },
   {
      "parent_securable_type":"CATALOG",
      "parent_full_name":"demo_icecream",
      "quota_name":"schema-quota",
      "quota_count":3,
      "quota_limit":10000,
      "last_refreshed_at":1720789637102
   },
   {
      "parent_securable_type":"CATALOG",
      "parent_full_name":"primarycatalog",
      "quota_name":"schema-quota",
      "quota_count":2,
      "quota_limit":10000,
      "last_refreshed_at":1720829359520
   },
   {
      "parent_securable_type":"CATALOG",
      "parent_full_name":"shared_catalog_azure",
      "quota_name":"schema-quota",
      "quota_count":670,
      "quota_limit":10000,
      "last_refreshed_at":1722036080791
   },
   {
      "parent_securable_type":"CATALOG",
      "parent_full_name":"cat-test",
      "quota_name":"schema-quota",
      "quota_count":567,
      "quota_limit":10000,
      "last_refreshed_at":1704845201239
   }
],
"next_page_token":"eyJfX3R2IjoiMCIsInB0IjoiQ2F0YWxvZyIsInBpZCI6IjAwNTAyYTM1LWIzMGQtNDc4YS1hYTIwLTE5MDZkMGVmNzdiNiIsInJ0IjoiU2NoZW1hIn0="