Поделиться через


Мониторинг использования квот ресурсов каталога Unity

В этой статье описывается, как отслеживать использование защищаемых объектов каталога Unity, которые подвергаются квотам ресурсов.

Для отслеживания использования можно использовать API-интерфейсы квот ресурсов каталога Unity. Хотя некоторые ограничения могут быть увеличены при запросе, другие исправлены. Чтобы избежать сбоев, запланируйте заранее и обратитесь к группе учетных записей Azure Databricks, если вы ожидаете превышение квот ресурсов.

Каковы квоты ресурсов каталога Unity?

Каталог Unity применяет квоты ресурсов для всех защищаемых объектов, управляемых каталогом Unity. Эти квоты перечислены в ограничениях ресурсов. Они определены в этой статье как квоты для чистых комнат, разностного общего доступа, Marketplace и каталога Unity.

Каждая квота определяется как число объектов на родительский объект (или область). Например, 10 000 таблиц на схему или 1000 000 таблиц на хранилище метаданных.

Запрос использования по квотам ресурсов

Чтобы отслеживать использование квот ресурсов заранее, используйте REST API-интерфейсы квот ресурсов каталога Unity:

  • GetQuota извлекает использование квоты для одного типа квоты, определенного как количество дочерних объектов на родительский объект (например, таблицы на хранилище метаданных).
  • ListQuotasизвлекает все значения квоты в целевом хранилище метаданных, разбиение на страницы по умолчанию.

Оба API возвращают сведения в виде quota_info объекта, содержащего следующие поля. Некоторые из этих полей также используются при выполнении запроса с помощью API GetQuota:

  • parent_securable_type: тип родительского объекта. Например, для счетчика таблиц на схему parent_securable_type используется значение schema.

    Примечание.

    Для квот, в которых родительский тип является зарегистрированной моделью, задайте для parent_securable_type functionпараметра значение .

  • parent_full_name: Полное имя родительского элемента квоты. Например, main.default схема. Если родительский объект является хранилищем метаданных, используйте идентификатор хранилища метаданных в запросе.

  • quota_name: имя квоты. Это дочерний объект (таблица, схема, общий доступ и т. д.) суффиксом -quota. Например, table-quota.

  • quota_count: последнее число использования. Например, 33 таблицы на схему.

  • quota_limit: значение ограничения квоты в момент вычисления числа квот. Например, 10000 таблицы на схему.

  • last_refreshed_at: при последнем обновлении количества квот. Это отображается в виде метки времени эпохи Unix. Метка времени можно преобразовать в удобочитаемый для человека формат с помощью онлайн-инструментов, таких как Epoch Converter.

ListQuotas API также возвращает маркер страницы в ответе, если текущий ответ не возвращает все результаты.

Авторизация и проверка подлинности API

Только администраторы учетных записей могут вызывать API квот ресурсов.

Администратор учетной записи, который вызывает API, должен использовать проверку подлинности OAuth на компьютере (U2M) (для пользователей или групп) или проверку подлинности OAuth на компьютере (M2M), если администратор учетной записи является субъектом-службой. Ознакомьтесь с проверкой подлинности доступа к Azure Databricks с помощью учетной записи пользователя с помощью OAuth (OAuth U2M) или аутентификации доступа к Azure Databricks с помощью субъекта-службы с помощью OAuth (OAuth M2M). Маркеры личного доступа ,созданные Databricks (PATs), также являются вариантом, но не рекомендуется.

Использование API GetQuota для получения значений использования квот для определенного типа квоты

GetQuota Используйте API для получения сведений об использовании для одной квоты ресурсов, определенной связыванием дочерних родителей.

Метод: GET

Путь: /unity-catalog/resource-quotas/{parent_securable_type}/{parent_full_name}/{quota_name}.

Параметры текста. Описание параметров см. в разделе "Запрос использования для квот ресурсов".

Справочник по API см. в статье GET /unity-catalog/resource-quotas/.

GetQuota счетчики точны в течение 30 минут после последней операции создания, выполняемой в родительском элементе квоты. Число может быть устаревшим, если выполнялись только операции удаления, так как каталог Unity обновляет количество квот только во время создания ресурса. Вызов 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
  }
}

Использование API ListQuotas для получения данных об использовании для всех типов квот в хранилище метаданных

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