Unity Catalog のリソース クォータの使用状況を監視する

この記事では、リソース クォータの対象となる Unity Catalog のセキュリティ保護可能なオブジェクトの使用状況を監視する方法について説明します。

Unity Catalog リソース クォータ APIsを使用して、使用状況を追跡できます。ご要望に応じて引き上げられる制限もあれば、固定されている制限もあります。 混乱を避けるために、事前に計画を立て、リソースクォータを超えることが予想される場合は Databricks アカウントチームに連絡してください。

Unity Catalog のリソースクォータとは何ですか?

Unity Catalog は、 Unity Catalog によって管理されるすべてのセキュリティ保護可能なオブジェクトにリソース クォータを適用します。 これらのクォータは、「 リソース制限」に記載されています。 その記事では、Clean Rooms、Delta Sharing、Marketplace、Unity Catalog のクォータとして識別されています。

各クォータは、親オブジェクト (またはスコープ) あたりのオブジェクト数として定義されます。 たとえば、スキーマごとに 10,000 テーブル、メタストアごとに 1,000,000 テーブルなどです。

リソース クォータに対する使用状況のクエリ

リソース クォータに対する使用状況を事前に監視するには、 Unity Catalog リソース クォータ REST APIsを使用します。

  • GetQuota 親あたりの子オブジェクトの数として定義される 1 つのクォータの種類 (メタストアあたりのテーブルなど) のクォータ使用量を取得します。

  • ListQuotasターゲット メタストアの下にあるすべてのクォータ値を、デフォルトによってページ分割して取得します。

どちらの APIs も、次のフィールドを含む quota_info オブジェクトの形式で情報を返します。 また、GetQuota API を使用してリクエストを行うときにも、これらのフィールドの一部を使用します。

  • parent_securable_type: 親オブジェクトのタイプ。 たとえば、スキーマあたりのテーブル数の場合、 parent_securable_typeschemaです。

    注:

    親タイプが登録済みモデルであるクォータの場合は、 parent_securable_typefunctionに設定します。

  • parent_full_name: クォータの親のフルネーム。 たとえば、 main.default スキーマです。 親がメタストアの場合は、リクエストでメタストア ID を使用します。

  • quota_name: クォータの名前。 これは、 -quotaの接尾辞が付いた子オブジェクト (テーブル、スキーマ、共有など) です。 たとえば、 table-quota.

  • quota_count: 最新の使用量。 たとえば、スキーマごとに 33 つのテーブルです。

  • quota_limit: クォータ数が計算された時点のクォータ制限値。 たとえば、スキーマごとに 10000 つのテーブルです。

  • last_refreshed_at: クォータ数が最後に更新された時刻。 これは、Unix エポックのタイムスタンプとして表示されます。 タイムスタンプは、 Epoch Converterなどのオンラインツールを使用して、人間が読める形式に変換できます。

ListQuotas API は、現在の応答がすべての結果を返さない場合にも、応答でページ トークンを返します。

API の承認と認証

リソースクォータ APIsを呼び出すことができるのは、アカウント管理者だけです。

APIsを呼び出すアカウント管理者はOAuth ユーザー対マシン (U2M) 認証 (ユーザーまたはグループ用) または OAuth マシン間 (M2M) 認証 (アカウント 管理者がサービスプリンシパルの場合) を使用する必要があります。 「OAuthユーザー対マシン (U2M) 認証」または「サービスプリンシパルを使用して Databricks で認証する (OAuth M2M)」を参照してください。Databricksで生成された 個人用アクセストークン (PAT) も選択肢となりますが、推奨されません。

GetQuota API を使用して、特定のクォータタイプのクォータ使用量の値を取得する

GetQuota API を使用して、子と親のペアで定義されている 1 つのリソース クォータの使用状況情報を取得します。

メソッド: GET

パス: /unity-catalog/resource-quotas/{parent_securable_type}/{parent_full_name}/{quota_name}

Body パラメーター: パラメーターの説明については、「 リソースクォータに対する使用量のクエリ」を参照してください。

APIリファレンスについては、GET /unity-catalog/resource-quotas/ を参照してください。

GetQuota カウントの精度は、クォータの親の下で実行された最後の作成操作から 30 分以内です。 削除操作のみが実行された場合、Unity Catalog はリソースの作成中にのみクォータ数を更新するため、カウントが古くなっている可能性があります。 クォータ カウントが古い場合は、 GetQuota を呼び出すとクォータ カウントの更新がトリガーされますが、トリガーは非同期であり、最初の呼び出しで新しいカウントが返されない可能性があります。

リクエストの例

ワークスペースにアタッチされたメタストアの main カタログで作成されたスキーマの数を要求する Python の例:

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"

レスポンスの例

メタストアあたりの 10,000 スキーマの制限に対して 2691 スキーマを示す応答:

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

Body パラメーター:

  • 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 つのクォータ カウントの 1 ページを示す応答:

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