监视 Unity Catalog 资源配额的使用情况
本文介绍如何监视受资源配额约束的 Unity Catalog 安全对象使用情况。
可以使用 Unity Catalog 资源配额 API 来跟踪使用情况。 虽然可以在请求时增加某些限制,但其他限制是固定的。 若要避免中断,如果预计超出资源配额,请提前计划并联系 Azure Databricks 帐户团队。
什么是 Unity Catalog 资源配额?
Unity Catalog 对由 Unity Catalog 管理的所有安全对象强制实施资源配额。 这些配额列在资源限制中。 本文中将其标识为“清理室”、“增量共享”、“市场”和“Unity Catalog”的配额。
将每个配额定义为每个父对象(或范围)的对象数量。 例如,每个架构 10,000 个表,每个元存储 1,000,000 个表。
根据资源配额查询使用情况
若要主动监视资源配额的使用情况,请使用 Unity Catalog 资源配额 REST API:
GetQuota
检索一种配额类型的配额使用情况,定义为每个父级的子对象数(例如,每个元存储的表数量)。ListQuotas
检索目标元存储下的所有配额值,默认情况下分页。
这两个 API 都以包含以下字段的 quota_info
对象的形式返回信息。 使用 GetQuota API 发出请求时,也可以使用以下字段之一:
parent_securable_type
:父对象的类型。 例如,对于每个架构的表计数,parent_securable_type
为schema
。注意
对于父类型为已注册模型的配额,请将
parent_securable_type
设置为function
。parent_full_name:
:配额父级的完整名称。 例如,main.default
架构。 如果父级是元存储,则请在请求中使用元存储 ID。quota_name
:配额的名称。 这是子对象(表、架构、共享等),后缀为-quota
。 例如,table-quota
。quota_count
:最新的使用计数。 例如,每架构33
个表。quota_limit
:计算配额计数时配额限制值。 例如,每架构10000
个表。last_refreshed_at
:上次刷新配额计数的时间。 它显示为 Unix Epoch 时间戳。 可以使用联机工具(例如 Epoch Converter),将时间戳转换为用户可读格式。
如果当前响应未返回所有结果,则 ListQuotas
API 还会在响应中返回页面令牌。
API 授权和身份验证
只有帐户管理员才能调用资源配额 API。
调用 API 的帐户管理员应使用 OAuth 用户到计算机 (U2M) 身份验证(对于用户或组)或 OAuth 计算机到计算机 (M2M) 身份验证(如果帐户管理员是服务主体)。 请参阅使用 OAuth (OAuth U2M) 通过用户帐户对 Azure Databricks 的访问进行身份验证或使用 OAuth (OAuth M2M) 通过服务主体对 Azure Databricks 的访问进行身份验证。 Databricks 生成的个人访问令牌 (PAT) 也是一个选项,但不建议这样做。
使用 GetQuota API 获取特定配额类型的配额使用值
使用 GetQuota
API 获取由子父配对定义的单个资源配额的使用信息。
方法:GET
路径:/unity-catalog/resource-quotas/{parent_securable_type}/{parent_full_name}/{quota_name}
正文参数:有关参数说明,请参阅根据资源配额来查询使用情况。
有关 API 参考,请参阅 GET /unity-catalog/resource-quotas/。
GetQuota
计数精确到在配额父级下执行的最后一次创建操作的 30 分钟内。 如果仅执行删除操作,则计数可能已过时,因为 Unity Catalog 仅在创建资源过程中更新配额计数。 如果计数已过时,则调用 GetQuota
会触发配额计数的刷新,但触发器是异步的,可能不会在第一次调用中返回新计数。
请求示例
Python 示例,用于请求已在附加到工作区的元存储中的 main
目录中创建的架构数:
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)
Curl 示例,可以执行相同的操作:
$ curl -X GET -H "Authentication: Bearer $OAUTH_TOKEN" \
"https://example-workspace.databricks.com/api/2.1/unity-catalog/resource-quotas/catalog/main/schema-quota"
响应示例
响应显示 2691 个架构,而每个元存储的限制为 10,000 个架构:
{
"quota_info": {
"parent_securable_type": "CATALOG",
"parent_full_name": "main",
"quota_name": "schema-quota",
"quota_count": 2691,
"quota_limit": 10000,
"last_refreshed_at": 1722559381517
}
}
使用 ListQuotas API 获取元存储中的所有配额类型的使用情况数据
使用 ListQuotas
API 获取元存储中的所有配额类型的使用情况数据。
方法:GET
路径:/unity-catalog/resource-quotas/all-resource-quotas
正文参数:
max_results
:要返回的结果数。 最大值为 500。 默认为 100。page_token
:上一个请求中的页面令牌,用于提取下一页结果。
有关 API 参考,请参阅 GET /unity-catalog/resource-quotas/all-resource-quotas。
与 GetQuotas
不同,ListQuotas
没有关于计数新鲜度的 SLA。 也不会触发配额计数刷新。 为了获得最高准确性,请使用 GetQuota
API。
请求示例
Python 示例,用于请求附加到工作区的元存储中的所有对象的配额计数,并指定每个页面返回 5 个结果:
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
Curl 示例,可以执行相同的操作:
$ 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"
响应示例
响应显示一页 5 个配额计数:
"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="