监视 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_typeschema

    注意

    对于父类型为已注册模型的配额,请将 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="