Supervisión del uso de cuotas de recursos del catálogo de Unity
En este artículo se describe cómo supervisar el uso de objetos protegibles de Unity Catalog que están sujetos a cuotas de recursos.
Puede usar las API de cuotas de recursos de Unity Catalog para realizar un seguimiento del uso. Aunque se pueden aumentar algunos límites a petición, otros se fijan. Para evitar interrupciones, planee con antelación y póngase en contacto con el equipo de la cuenta de Azure Databricks si prevé superar las cuotas de recursos.
¿Qué son las cuotas de recursos de Unity Catalog?
Unity Catalog aplica cuotas de recursos en todos los objetos protegibles que gestiona Unity Catalog. Estas cuotas se muestran en Límites de recursos. En este artículo se identifican como cuotas para Salas limpias, Delta Sharing, Marketplace y Unity Catalog.
Cada cuota se define como un número de objetos por objeto primario (o ámbito). Por ejemplo, 10 000 tablas por esquema o 1 000 000 tablas por metastore.
Consulta del uso de las cuotas de recursos
Para supervisar el uso de las cuotas de recursos de forma proactiva, use las API REST de cuotas de recursos de Unity Catalog:
GetQuota
recupera el uso de cuota para un tipo de cuota, definido como el número de objetos secundarios por elemento primario (por ejemplo, tablas por metastore).ListQuotas
recupera todos los valores de cuota en el metastore de destino, paginado de manera predeterminada.
Ambas API devuelven información en forma de objeto quota_info
que contiene los campos siguientes. También se usan algunos de estos campos al realizar una solicitud mediante GetQuota API:
parent_securable_type
: tipo del objeto primario. Por ejemplo, para el recuento de tablas por esquema,parent_securable_type
esschema
.Nota:
Para las cuotas en las que el tipo primario es un modelo registrado, establezca
parent_securable_type
enfunction
.parent_full_name:
: nombre completo del elemento primario de la cuota. Por ejemplo, el esquemamain.default
. Si el elemento primario es un metastore, use el identificador de metastore en la solicitud.quota_name
: nombre de la cuota. Este es el objeto secundario (tabla, esquema, recurso compartido, etc.) con el sufijo-quota
. Por ejemplo,table-quota
.quota_count
: recuento de uso más reciente. Por ejemplo,33
tablas por esquema.quota_limit
: valor de límite de la cuota en el momento en que se calculó el recuento de cuotas. Por ejemplo,10000
tablas por esquema.last_refreshed_at
: la última vez que se actualizó el recuento de cuotas. Se muestra como una marca de tiempo de época de Unix. Puede convertir la marca de tiempo a un formato legible mediante herramientas en línea como el Convertidor de épocas.
ListQuotas
API también devuelve un token de página en la respuesta si la respuesta actual no devuelve todos los resultados.
Autorización y autenticación de API
Solo los administradores de cuentas pueden llamar a las API de cuotas de recursos.
El administrador de cuentas que llama a las API debe usar la autenticación de usuario a máquina (U2M) de OAuth (para usuarios o grupos) o la autenticación de máquina a máquina (M2M) de OAuth (si el administrador de la cuenta es una entidad de servicio). Consulte Autenticación del acceso a Azure Databricks con una cuenta de usuario mediante OAuth (OAuth U2M) o Autenticación del acceso a Azure Databricks con una entidad de servicio mediante OAuth (OAuth M2M). Los tokens de acceso personal (PAT) generados por Databricks también son una opción, pero no se recomienda.
Uso de GetQuota API a fin de obtener valores de uso de cuota para un tipo de cuota específico
Use GetQuota
API para obtener información de uso de una sola cuota de recursos tal como se define en un emparejamiento primario-secundario.
Método: GET
Ruta de acceso: /unity-catalog/resource-quotas/{parent_securable_type}/{parent_full_name}/{quota_name}
Parámetros del cuerpo: para obtener descripciones de parámetros, vea Consulta del uso de las cuotas de recursos.
Para obtener la referencia de API, vea GET/unity-catalog/resource-quotas/.
Los recuentos de GetQuota
son exactos en un plazo de 30 minutos a partir de la última operación de creación realizada en el elemento primario de cuota. Es posible que el recuento no esté actualizado si solo se han realizado operaciones de eliminación, ya que Unity Catalog actualiza el recuento de cuotas solo durante la creación de recursos. La llamada a GetQuota
desencadena una actualización del recuento de cuotas si no está actualizada, pero el desencadenador es asíncrono y es posible que no se devuelvan nuevos recuentos en la primera llamada.
Ejemplo de solicitud
Ejemplo de Python que solicita el número de esquemas que se han creado en el catálogo main
en el metastore adjunto al área de trabajo:
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)
Ejemplo de Curl que hace lo mismo:
$ curl -X GET -H "Authentication: Bearer $OAUTH_TOKEN" \
"https://example-workspace.databricks.com/api/2.1/unity-catalog/resource-quotas/catalog/main/schema-quota"
Ejemplo de respuesta
Respuesta en la que se muestran 2691 esquemas con el límite 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
}
}
Uso de ListQuotas API para obtener datos de uso de todos los tipos de cuota de un metastore
Use ListQuotas
API para obtener datos de uso de todos los tipos de cuota de un metastore.
Método: GET
Ruta de acceso: /unity-catalog/resource-quotas/all-resource-quotas
Parámetros del cuerpo:
max_results
: número de resultados que se van a devolver. El valor máximo es 500. El valor predeterminado es 100.page_token
: token de página de la solicitud anterior para capturar la siguiente página de resultados.
Para obtener la referencia de API, vea GET/unity-catalog/resource-quotas/all-resource-quotas.
A diferencia de GetQuotas
, ListQuotas
no tiene ningún Acuerdo de Nivel de Servicio sobre la actualización de los recuentos. Tampoco desencadena las actualizaciones de recuento de cuotas. Para obtener una precisión máxima, use GetQuota
API.
Ejemplo de solicitud
Ejemplo de Python que solicita recuentos de cuota para todos los objetos del metastore adjuntos al área de trabajo, especificando 5 resultados que se devolverán 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
Ejemplo de Curl que hace lo mismo:
$ 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"
Ejemplo de respuesta
Respuesta en la que se muestra una página de 5 recuentos de cuotas:
"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="