Unity Catalog リソース クォータの使用状況を監視する
この記事では、リソース クォータの対象となる Unity Catalogのセキュリティ保護可能なリソースオブジェクトの使用状況を監視する方法について説明します。
Unity Catalog リソース クォータ API を使用して、使用状況を追跡できます。 一部の制限は要求に応じて増やすことができますが、他の制限は固定されます。 中断を回避するために、リソース クォータを超えることが予想される場合は、事前に計画を立て、Azure Databricks アカウント チームにお問い合わせください。
Unity Catalog のリソース クォータとは。
Unity Catalog では、Unity Catalog によって管理されるすべてのセキュリティ保護可能なオブジェクト にリソース クォータが適用されます。 これらのクォータは、リソースの制限 に記載されています。 この記事では、クリーン ルーム、Delta 共有、マーケットプレース、Unity Catalogのクォータとして識別されます。
各クォータは、親オブジェクト (またはスコープ)あたりのオブジェクトの数として定義されます。 たとえば、スキーマあたり 10,000 テーブル、メタストアあたり 1,000,000 テーブルなどです。
リソース クォータに対して使用状況のクエリを実行する
リソース クォータに対する使用状況を事前に監視するには、Unity Catalog リソース クォータ REST API を使用します。
GetQuota
は、親ごとの子オブジェクトの数 (メタストアごとのテーブルなど) として定義された、1 つのクォータの種類のクォータ使用量を取得します。ListQuotas
は、既定ではページ分割されたターゲットメタストアのすべてのクォータ値を取得します。
どちらの API も、次のフィールドを含む quota_info
オブジェクトの形式で情報を返します。 GetQuota API を使用して要求を行うときにも、これらのフィールドの一部を使用します。
parent_securable_type
: 親オブジェクトの種類。 たとえば、スキーマごとのテーブル数の場合、parent_securable_type
はschema
。Note
親の種類が登録済みモデルであるクォータの場合は、
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 エポック タイムスタンプとして表示されます。 エポック コンバーター などのオンライン ツールを使用して、タイムスタンプを人間が判読できる形式に変換できます。
ListQuotas
API は、現在の応答ですべての結果が返されない場合にも、応答でページ トークンを返します。
API の承認と認証
リソース クォータ API を呼び出すことができるのは、アカウント管理者だけです。
API を呼び出すアカウント管理者は、OAuth ユーザー対マシン (U2M) 認証 (ユーザーまたはグループの場合) または OAuth マシン対マシン (M2M) 認証 (アカウント管理者がサービス プリンシパルの場合) のいずれかを使用する必要があります。 OAuth (OAuth U2M) を使用したユーザー アカウントでの Azure Databricks へのアクセスの認証、または OAuth (OAuth M2M) を使用したサービス プリンシパルを使用した Azure Databricks への認証アクセスのに関するページを参照してください。 Databricks によって生成された 個人アクセス トークン (AT) もオプションですが、推奨されません。
GetQuota API を使用して、特定のクォータの種類のクォータ使用量の値を取得する
GetQuota
API を使用して、子と親のペアリングによって定義されている 1 つのリソース クォータの使用状況情報を取得します。
メソッド: GET
パス: /unity-catalog/resource-quotas/{parent_securable_type}/{parent_full_name}/{quota_name}
本文パラメーター: パラメーターの説明については、「リソース クォータに対して使用量のクエリを実行する」を参照してください。
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
本文のパラメーター:
max_results
: 返す結果の数。 最大値は 500 です。 既定値は 100 です。page_token
: 結果の次のページをフェッチするための前の要求のページ トークン。
API リファレンスについては、「GET /unity-catalog/resource-quotas/all-resource-quotas」を参照してください。
GetQuotas
とは異なり、ListQuotas
にはカウントの鮮度における SLA はありません。 また、クォータ数の更新もトリガーされません。 精度を最大限に高めるには、GetQuota
API を使用します。
要求の例
ワークスペースにアタッチされているメタストア内のすべてのオブジェクトのクォータ数を要求し、ページごとに返す結果を 5 つ指定する Python の例:
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="