Monitorar o uso de cotas de recursos do Catálogo do Unity
Este artigo descreve como monitorar o uso de objetos protegíveis do Catálogo do Unity que estão sujeitos a cotas de recursos.
Você pode usar as APIs de cotas de recursos do Catálogo do Unity para acompanhar o uso. É possível solicitar o aumento de alguns limites, enquanto outros são fixos. Para evitar interrupções, planeje com antecedência e entre em contato com a equipe da conta do Azure Databricks se precisar exceder as cotas de recursos.
O que são cotas de recursos do Catálogo do Unity?
O Catálogo do Unity aplica cotas de recursos em todos os objetos protegíveis gerenciados pelo Catálogo do Unity. Essas cotas são listadas em Limites de recursos. Elas são identificadas nesse artigo como cotas para Clean Rooms, Delta Sharing, Marketplace e Catálogo do Unity.
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 de tabelas por metastore.
Consultar seu uso em relação às cotas de recursos
Para monitorar o uso em relação às cotas de recursos de forma proativa, use as APIs REST de Cotas de Recursos do Catálogo do Unity:
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).ListQuotas
Recupera todos os valores de cota no metastore de destino, paginado por padrão.
Ambas as APIs retornam informações na forma de um objeto quota_info
que contém os campos a seguir. Você também usa alguns desses campos ao fazer uma solicitação usando a API GetQuota:
parent_securable_type
: tipo do objeto pai. Por exemplo, para a contagem de tabelas por esquema, oparent_securable_type
éschema
.Observação
Para cotas nas quais o tipo pai é um modelo registrado, defina o
parent_securable_type
comofunction
.parent_full_name:
Nome completo do pai da cota. Por exemplo, o esquemamain.default
. Se o pai for um metastore, use o ID do metastore em sua solicitação.quota_name
: nome da conta. Esse é o objeto filho (tabela, esquema, compartilhamento e assim por diante) com o sufixo-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 cota no momento em que a contagem de cotas 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 em um formato legível por humanos usando ferramentas online como o Epoch Converter.
A API ListQuotas
também retornará 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 administradores de conta podem chamar as APIs de cotas de recursos.
O administrador da conta que chama as APIs deve usar a autenticação U2M (usuário para máquina) OAuth (para usuários ou grupos) ou a autenticação M2M (máquina a máquina) OAuth (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 PATs (tokens de acesso pessoal) gerados pelo Databricks também são uma opção, mas não são recomendados.
Usar a API GetQuota para obter valores de uso de cota para um tipo de cota específico
Use a API GetQuota
para obter informações de uso de uma única cota de recurso, conforme definido por um emparelhamento pai-filho.
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/.
As contagens GetQuota
são precisas até 30 minutos após a última operação de criação executada no pai da cota. A contagem poderá estar desatualizada se apenas operações de exclusão tiverem sido executadas, pois o Catálogo do Unity atualiza a contagem de cotas somente durante a criação do recurso. A chamada GetQuota
disparará 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 de Python que solicita o número de esquemas que foram criados no catálogo main
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 curl 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
}
}
Usar a API ListQuotas para obter dados de uso para todos os tipos de cota em um metastore
Use a API ListQuotas
para obter dados de uso para todos os tipos de cota em um metastore.
Método: GET
Caminho: /unity-catalog/resource-quotas/all-resource-quotas
Parâmetros do corpo:
max_results
: número de resultados para retornar. 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 do GetQuotas
, o ListQuotas
não tem SLA sobre a atualização das contagens. Também não dispara atualizações de contagem de cotas. Para obter precisão máxima, use a API GetQuota
.
Exemplo de solicitação
Exemplo de Python que solicita contagens de cotas 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 curl 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 cotas:
"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="