Condividi tramite


Monitorare l'utilizzo delle quote di risorse di Unity Catalog

Questo articolo descrive come monitorare l'utilizzo di oggetti a protezione diretta di Unity Catalog soggetti a quote di risorse.

È possibile usare le API delle quote di risorse di Unity Catalog per tenere traccia dell'utilizzo. Anche se alcuni limiti possono essere aumentati su richiesta, altri sono fissi. Per evitare disagi, pianificare in anticipo e contattare il team dell'account di Azure Databricks se si prevede di superare le quote di risorse.

Cosa sono le quote di risorse di Unity Catalog?

Unity Catalog applica le quote di risorse a tutti gli oggetti a protezione diretta gestiti da Unity Catalog. Queste quote sono elencate in Limiti delle risorse. Sono identificati in tale articolo come quote per cleanroom, Delta Sharing, Marketplace e Unity Catalog.

Ogni quota viene definita come un numero di oggetti per ogni oggetto padre (o ambito). Ad esempio, 10.000 tabelle per schema o 1.000.000 di tabelle per metastore.

Eseguire query sull'utilizzo rispetto alle quote di risorse

Per monitorare in modo proattivo l'utilizzo delle quote di risorse, usare le API REST Quote di risorse di Unity Catalog:

  • GetQuota recupera l'utilizzo delle quote per un tipo di quota, definito come numero di oggetti figlio per ogni elemento padre, (ad esempio tabelle per metastore).
  • ListQuotas recupera tutti i valori di quota nel metastore di destinazione, impaginati per impostazione predefinita.

Entrambe le API restituiscono informazioni sotto forma di oggetto quota_info che contiene i campi seguenti. È anche possibile usare alcuni di questi campi quando si effettua una richiesta usando l'API GetQuota:

  • parent_securable_type: Tipo dell'oggetto padre. Ad esempio, per il numero di tabelle per schema, il parent_securable_type è schema.

    Nota

    Per le quote in cui il tipo padre è un modello registrato, impostare parent_securable_type su function.

  • parent_full_name: Nome completo dell'elemento padre quota della quota. Ad esempio, lo schema main.default. Se l'elemento padre è un metastore, usare l'ID metastore nella richiesta.

  • quota_name: nome della quota. Si tratta dell'oggetto figlio (tabella, schema, condivisione e così via) con suffisso -quota. Ad esempio: table-quota.

  • quota_count: conteggio di utilizzo più recente. Ad esempio, 33 tabelle per schema.

  • quota_limit: valore limite della quota al momento del calcolo del conteggio delle quote. Ad esempio, 10000 tabelle per schema.

  • last_refreshed_at: ora dell'ultimo aggiornamento del conteggio delle quote. Viene visualizzato come timestamp del periodo Unix. È possibile convertire il timestamp in un formato leggibile usando strumenti online come Epoch Converter.

L'API ListQuotas restituisce anche un token di pagina nella risposta se la risposta corrente non restituisce tutti i risultati.

Autenticazione e autorizzazione API

Solo gli amministratori dell'account possono chiamare le API Quote di risorse.

L'amministratore dell'account che chiama le API deve usare l'autenticazione da utente a computer (U2M) OAuth (per utenti o gruppi) o l'autenticazione da computer a computer (M2M) OAuth (se l'amministratore dell'account è un'entità servizio). Consultare Autenticare l'accesso ad Azure Databricks con un account utente usando OAuth (OAuth U2M) o Autenticare l'accesso ad Azure Databricks con un’entità servizio usando OAuth (OAuth M2M). I token di accesso personale (PAT) generati da Databricks sono anche un'opzione, ma non consigliata.

Usare l'API GetQuota per ottenere i valori di utilizzo delle quote per un tipo di quota specifico

Usare l'API GetQuota per ottenere informazioni sull'utilizzo per una singola quota di risorse, come definito da un'associazione padre-figlio.

Metodo: GET

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

Parametri di corpo: per le descrizioni dei parametri, vedere Eseguire query sull'utilizzo delle quote di risorse.

Per il riferimento sull'API, vedere GET /unity-catalog/resource-quotas/.

I conteggi GetQuota sono precisi entro 30 minuti dall'ultima operazione di creazione eseguita con l'elemento padre della quota. Il conteggio potrebbe non essere aggiornato se sono state eseguite solo operazioni di eliminazione, perché Unity Catalog aggiorna il numero di quote solo durante la creazione delle risorse. La chiamata GetQuota attiva un aggiornamento del conteggio delle quote se non è aggiornato, ma il trigger è asincrono e i nuovi conteggi potrebbero non essere restituiti nella prima chiamata.

Esempio di richiesta

Esempio di Python che richiede il numero di schemi creati nel catalogo main nel metastore collegato all'area di lavoro:

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)

Esempio di curl che esegue la stessa operazione:

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

Risposta di esempio

Risposta che mostra 2.691 schemi rispetto al limite di 10.000 schemi per metastore:

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

Usare l'API ListQuotas per ottenere i dati di utilizzo per tutti i tipi di quota in un metastore

Usare l'API ListQuotas per ottenere i dati di utilizzo per tutti i tipi di quota in un metastore.

Metodo: GET

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

Parametri del corpo:

  • max_results: numero di risultati da restituire. Il valore massimo è 500. L’impostazione predefinita è 100.
  • page_token: token di pagina dalla richiesta precedente per recuperare la pagina successiva dei risultati.

Per il riferimento sull'API, vedere GET /unity-catalog/resource-quotas/all-resource-quotas.

A differenza di GetQuotas, ListQuotas non ha alcun contratto di servizio sull’aggiornamento dei conteggi. E non attiva gli aggiornamenti del conteggio delle quote. Per ottenere la massima precisione, usare l'API GetQuota.

Esempio di richiesta

Esempio di Python che richiede il conteggio delle quote per tutti gli oggetti nel metastore collegato all'area di lavoro, specificando 5 risultati da restituire per pagina:

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

Esempio di curl che esegue la stessa operazione:

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

Risposta di esempio

Risposta che mostra una pagina di 5 conteggi delle quote:

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