Partilhar via


Monitore seu uso das cotas de recursos do Catálogo Unity

Este artigo descreve como monitorar o uso de objetos protegíveis do Unity Catalog que estão sujeitos a cotas de recursos.

Você pode usar as APIs de cotas de recursos do Unity Catalog para controlar o uso. Embora alguns limites possam ser aumentados mediante solicitação, outros são fixos. Para evitar interrupções, planeje com antecedência e entre em contato com sua equipe de conta do Azure Databricks se você prevê exceder suas cotas de recursos.

O que são cotas de recursos do Unity Catalog?

O Unity Catalog impõe cotas de recursos em todos os objetos protegíveis gerenciados pelo Unity Catalog. Essas cotas estão listadas em Limites de recursos. Eles são identificados nesse artigo como cotas para Clean Rooms, Delta Sharing, Marketplace e Unity Catalog.

Cada cota é definida como um número de objetos por objeto pai (ou escopo). Por exemplo, 10.000 tabelas por esquema ou 1.000.000 tabelas por metastore.

Consultar seu uso em relação a cotas de recursos

Para monitorar o uso em relação às cotas de recursos proativamente, use as APIs REST de cotas de recursos do Unity Catalog:

  • GetQuota Recupera o uso da cota para um tipo de cota, definido como o número de objetos filho por pai (por exemplo, tabelas por metastore).
  • ListQuotasRecupera todos os valores de cota no metastore de destino, paginado por padrão.

Ambas as APIs retornam informações na forma de um quota_info objeto que contém os campos a seguir. Você também usa alguns desses campos quando faz uma solicitação usando a API GetQuota:

  • parent_securable_type: Tipo do objeto pai. Por exemplo, para a contagem de tabelas por esquema, o parent_securable_type é schema.

    Nota

    Para cotas nas quais o tipo pai é um modelo registrado, defina como parent_securable_type function.

  • parent_full_name: Nome completo do pai da cota. Por exemplo, o main.default esquema. Se o pai for um metastore, use o ID do metastore em sua solicitação.

  • quota_name: Nome da quota. Este é o objeto filho (tabela, esquema, compartilhamento e assim por diante) sufixado por -quota. Por exemplo, table-quota.

  • quota_count: A contagem de uso mais recente. Por exemplo, 33 tabelas por esquema.

  • quota_limit: O valor-limite da quota no momento em que a contagem das quotas foi calculada. Por exemplo, 10000 tabelas por esquema.

  • last_refreshed_at: A última vez que a contagem de cotas foi atualizada. Isso é exibido como um carimbo de data/hora da época Unix. Você pode converter o carimbo de data/hora para um formato legível por humanos usando ferramentas on-line como o Epoch Converter.

A ListQuotas API também retorna um token de página na resposta se a resposta atual não retornar todos os resultados.

Autorização e autenticação de API

Somente os administradores de conta podem chamar as APIs de Cotas de Recursos.

O administrador da conta que chama as APIs deve usar a autenticação OAuth user-to-machine (U2M) (para usuários ou grupos) ou a autenticação OAuth machine-to-machine (M2M) (se o administrador da conta for uma entidade de serviço). Consulte Autenticar o acesso ao Azure Databricks com uma conta de usuário usando OAuth (OAuth U2M) ou Autenticar o acesso ao Azure Databricks com uma entidade de serviço usando OAuth (OAuth M2M). Os tokens de acesso pessoal (PATs) gerados por Databricks também são uma opção, mas não recomendados.

Use a API GetQuota para obter valores de uso de cota para um tipo de cota específico

Use a API para obter informações de uso para uma única cota GetQuota de recurso, conforme definido por um par filho-pai.

Método: GET

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

Parâmetros do corpo: para obter descrições de parâmetros, consulte Consultar seu uso em relação às cotas de recursos.

Para obter a referência da API, consulte GET /unity-catalog/resource-quotas/.

GetQuota As contagens são precisas dentro de 30 minutos da última operação de criação executada sob o pai de cota. A contagem pode estar desatualizada se apenas operações de exclusão tiverem sido executadas, porque o Unity Catalog atualiza a contagem de cotas somente durante a criação de recursos. A chamada GetQuota aciona uma atualização da contagem de cotas se ela estiver desatualizada, no entanto, o gatilho é assíncrono e novas contagens podem não ser retornadas na primeira chamada.

Exemplo de solicitação

Exemplo Python que solicita o número de esquemas que foram criados no main catálogo no metastore anexado ao espaço de trabalho:

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)

Exemplo de ondulação que faz o mesmo:

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

Exemplo de resposta

Resposta que mostra 2691 esquemas em relação ao limite de 10.000 esquemas por 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
  }
}

Use a API ListQuotas para obter dados de uso para todos os tipos de cota em um metastore

Use a API para obter dados de uso para todos os tipos de cota ListQuotas em um metastore.

Método: GET

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

Parâmetros do corpo:

  • max_results: Número de resultados a devolver. O valor máximo é 500. O padrão é 100.
  • page_token: Token de página da solicitação anterior para buscar a próxima página de resultados.

Para obter a referência da API, consulte GET /unity-catalog/resource-quotas/all-resource-quotas.

Ao contrário GetQuotasdo , ListQuotas não tem SLA sobre a frescura das contas. Também não aciona atualizações de contagem de cotas. Para máxima precisão, use a GetQuota API.

Exemplo de solicitação

Exemplo Python que solicita contagens de cota para todos os objetos no metastore anexado ao espaço de trabalho, especificando 5 resultados a serem retornados por página:

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

Exemplo de ondulação que faz o mesmo:

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

Exemplo de resposta

Resposta que mostra uma página de 5 contagens 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="