Aller au contenu principal

Surveillez votre utilisation des quotas de ressources Unity Catalog

Cet article décrit comment surveiller votre utilisation des objets sécurisables Unity Catalog qui sont soumis à des quotas de ressources.

Vous pouvez utiliser les API de quotas de ressources Unity Catalog pour suivre l'utilisation. Bien que certaines limites puissent être augmentées sur demande, d'autres sont fixes. Pour éviter les disruptions, planifiez à l'avance et contactez votre équipe de compte Databricks si vous prévoyez de dépasser vos quotas de ressources.

Quels sont les quotas de ressources Unity Catalog ?

Unity Catalog applique des quotas de ressources à tous les objets sécurisables gérés par Unity Catalog. Ces quotas sont répertoriés dans les Limites de ressources. Ils sont identifiés dans cet article comme des quotas pour les salles blanches, OpenSharing, Marketplace et Unity Catalog.

Chaque quota est défini comme un nombre d'objets par objet parent (ou portée). Par exemple, 10 000 tables par schéma ou 1 000 000 de tables par metastore.

Query votre utilisation par rapport aux quotas de Ressources

Pour surveiller l'utilisation par rapport aux quotas de ressources de manière proactive, utilisez les APIs REST des quotas de ressources de Unity Catalog :

  • GetQuota récupère l'utilisation des quotas pour un type de quota, défini comme le nombre d'objets enfants par parent (par exemple, les tables par métastore).
  • ListQuotasrécupère toutes les valeurs de quota sous le métastore cible, paginées par default.

Les deux APIs renvoient des informations sous la forme d'un objet quota_info qui contient les champs suivants. Vous utilisez également certains de ces champs lorsque vous effectuez une demande à l’aide de l’API GetQuota :

  • parent_securable_type: Type de l'objet parent. Par exemple, pour le nombre de tables par schéma, le parent_securable_type est schema.
remarque

Pour les quotas où le type parent est un modèle enregistré, définissez parent_securable_type sur function.

  • parent_full_name: Nom complet du parent de quota. Par exemple, le schéma main.default. Si le parent est un metastore, utilisez l'ID du métastore dans votre requête.

  • quota_name: Nom du quota. Ceci est l'objet enfant (table, schéma, partage, etc.) suffixé par -quota. Par exemple, table-quota.

  • quota_count: Le dernier décompte d'utilisation. Par exemple, 33 tables par schéma.

  • quota_limit : La valeur de la limite de quota au moment où le nombre de quotas a été calculé. Par exemple, 10000 tables par schéma.

  • last_refreshed_at: La dernière fois que le nombre de quotas a été actualisé. Ceci est affiché comme un timestamp d'époque Unix. Vous pouvez convertir le Timestamp en un format lisible par l'homme à l'aide d'outils en ligne tels que Epoch Converter.

L'API ListQuotas renvoie également un jeton de page dans la réponse si la réponse actuelle ne renvoie pas tous les résultats.

Autorisation et authentification de l'API

Seuls les administrateurs de compte peuvent appeler les APIs de quotas de ressources.

L'administrateur de compte qui appelle les APIs devrait utiliser soit l'authentification OAuth user-to-machine (U2M) (pour les utilisateurs ou les groupes), soit l'authentification OAuth machine-to-machine (M2M) (si l'administrateur de compte est un Service Principal). Consultez Autoriser l'accès des utilisateurs à Databricks avec OAuth ou Autoriser l'accès du Service Principal à Databricks avec OAuth. Les jetons d'accès personnels (PAT) générés par Databricks sont également une option, mais ne sont pas recommandés.

Utilisez l'API GetQuota pour obtenir les valeurs d'utilisation des quotas pour un type de quota spécifique

Utilisez l'API GetQuota pour obtenir les informations d'utilisation d'un seul quota de ressources, tel que défini par un appariement parent-enfant.

Méthode : GET

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

Paramètres du corps : pour les descriptions de parameter, consultez query votre utilisation par rapport aux quotas de Ressources.

Pour la référence d'API, consultez GET /unity-catalog/resource-quotas/.

GetQuota les décomptes sont précis à 30 minutes près de la dernière opération de création effectuée sous le parent de quota. Le décompte pourrait être obsolète si seules des opérations de suppression ont été effectuées, car Unity Catalog met à jour le décompte de quota uniquement lors de la création de ressources. L'appel de GetQuota déclenche une refresh du nombre de quotas s'il n'est pas à jour ; cependant, le Trigger est asynchrone et les nouveaux décomptes pourraient ne pas être renvoyés lors du premier appel.

Exemple de requête

Exemple Python qui demande le nombre de schémas créés dans le catalogue main du métastore attaché au Workspace :

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

Exemple Curl qui fait la même chose :

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

Exemple de réponse

Réponse affichant 2 691 schémas par rapport à la limite de 10 000 schémas par metastore :

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

Utilisez l'API ListQuotas pour obtenir les données d'utilisation pour tous les types de quotas dans un metastore

Utilisez l'API ListQuotas pour obtenir les données d'utilisation pour tous les types de quota dans un metastore.

Méthode : GET

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

**Paramètres du corps** :

  • max_results: Nombre de résultats à renvoyer. La valeur maximale est de 500. La valeur par défaut est 100.
  • page_token: Jeton de page de la requête précédente pour récupérer la page de résultats suivante.

Pour la référence de l'API, consultez GET /unity-catalog/resource-quotas/all-resource-quotas.

Contrairement à GetQuotas, ListQuotas n'a pas de SLA sur la fraîcheur des comptes. Il ne déclenche pas non plus de quota count refresh. Pour une précision maximale, utilisez l'API GetQuota.

Exemple de requête

Exemple Python qui demande les quotas pour tous les objets dans le métastore attaché au workspace, spécifiant 5 résultats par page :

Python
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

Exemple Curl qui fait la même chose :

Bash
$ 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"

Exemple de réponse

Réponse qui affiche une page de 5 décomptes de quotas :

"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="