このページでは、Unity Catalog を使用して、Delta Sharing を介してデータを共有しているデータプロバイダーに関する情報を取得する方法を説明します。 また、プロバイダー オブジェクトとは何かについて、Unity Catalog メタストアでプロバイダー オブジェクトを作成する必要がある場合、およびほとんどの受信者が行う必要のないタスクについても説明します。
重要
データ受信者は、説明されている機能を使用するために Unity カタログ が有効になっている Databricks ワークスペースにアクセスできる必要があります。 このページは、Unity カタログが有効なワークスペースを持たない受信者には適用されません。
受信者がプロバイダー オブジェクトを作成する必要はありますか?
Delta Sharing の Databricks では、"provider" という用語は、データを共有する組織および、その組織を表す受信者の Unity カタログ メタストア内のセキュリティ保護可能なオブジェクトの両方を意味します。 受信者の Unity カタログ メタストアにそのセキュリティ保護可能なオブジェクトが存在することで、受信者は Unity カタログを使用してチームの共有データへのアクセスを管理できます。
Unity カタログ メタストアにアクセスできる受信者は、通常、プロバイダー オブジェクトを作成する必要はありません。 これは、データの共有には Databricks 間の共有を使用する必要があり、プロバイダー オブジェクトが Unity カタログ メタストアに自動的に作成されるためです。
ノート
Unity カタログ対応 Databricks ワークスペースから共有していないプロバイダーからデータを受信する場合は、カタログ エクスプローラーを使用してプロバイダーの資格情報ファイルをインポートできます。 「Azure Databricks: オープン共有コネクタを使用して共有データを読み取るを参照してください。
開始する前に
Azure Databricks ワークスペースでプロバイダーを管理するには:
- ワークスペースは、Unity Catalog に対して有効にする必要があります。
- プロバイダーを表示するには、メタストア管理者であるか、メタストア管理者から
USE PROVIDER特権を付与されている必要があります。 - プロバイダーを作成するには、メタストア管理者であるか、メタストア管理者から
CREATE PROVIDER特権が付与されている必要があります。 - プロバイダーを更新するには、プロバイダー オブジェクトの所有者であり、
CREATE PROVIDER特権を持っている必要があります。 詳細については、「プロバイダーを更新する (名前の変更、所有者の変更、コメント)」を参照してください。
このため、メタストア管理者なしでワークスペースが作成された場合は、Azure Databricks でプロバイダー オブジェクトを操作する前に、Azure Databricks アカウント管理者がユーザーまたはグループにメタストア管理者ロールを付与する必要があります。 「Unity Catalog の自動有効化」および「(省略可能) メタストア管理者ロールの割り当て」を参照してください。
プロバイダーを表示する
使用可能なデータ プロバイダーの一覧を表示するには、カタログ エクスプローラー、Databricks Unity Catalog CLI、または Azure Databricks ノートブックや Databricks SQL クエリ エディターで SHOW PROVIDERS SQL コマンドを使用することができます。
必要なアクセス許可: メタストア内のすべてのプロバイダーを表示するには、 USE PROVIDER 特権が必要です。 他のユーザーは、自分が所有するプロバイダーにのみアクセスできます。
カタログ エクスプローラー
Azure Databricks ワークスペースで、[
カタログ。
[カタログ] ウィンドウの上部にある
歯車アイコンをクリックして、[Delta Sharing] を選択します。
または、右上隅の > をクリックします。
[ 自分と共有 ] タブで、組織と共有されているすべてのデータを表示します。 各共有について、次の詳細が提供されます。
- 名前: プロバイダーによって指定された組織名。
- 認証の種類: プロバイダーによって使用される共有メソッド。
- 所有者: プロバイダーの名前または電子メール。
- 作成日時: 共有が作成された日時。
- 説明: 共有の説明。
SQL
ノートブックまたは Databricks SQL クエリ エディターで次のコマンドを実行します。 必要に応じて、<pattern> をLIKE の述語 に置き換えます。
SHOW PROVIDERS [LIKE <pattern>];
SHOW PROVIDERSの詳細については、SHOW PROVIDERSを参照してください。
CLI
Databricks CLI を使用して次のコマンドを実行します。
databricks providers list
プロバイダーの詳細を表示する
プロバイダーの詳細を表示するには、カタログ エクスプローラー、Databricks Unity Catalog CLI、または Azure Databricks ノートブックや Databricks SQL クエリ エディターで DESCRIBE PROVIDER SQL コマンドを使用することができます。
必要なアクセス許可: メタストア管理者、USE PROVIDER 特権を持つユーザー、またはプロバイダー オブジェクト所有者。
詳細には次のものが含まれます。
- プロバイダーによって共有されている共有 (「プロバイダーが共有している共有を表示する」を参照)。
- プロバイダーの作成者、作成タイムスタンプ、コメント、認証の種類 (
TOKENまたはDATABRICKS)。TOKENは、Delta Sharing オープン共有プロトコルを使用してデータを共有しているプロバイダーを表します。DATABRICKSは、Databricks 間の共有プロトコルを使用してデータをあなたと共有しているプロバイダーを表します。 - プロバイダーが Databricks 間共有を使用している場合: プロバイダーの Unity Catalog メタストアのクラウド、リージョン、メタストア ID。
- プロバイダーがオープン共有を使用している場合: Delta Sharing 共有サーバーがホストされている受信者プロファイル エンドポイント。
カタログ エクスプローラー
Azure Databricks ワークスペースで、[
カタログ。
[カタログ] ウィンドウの上部にある
歯車アイコンをクリックして、[Delta Sharing] を選択します。
または、右上隅の > をクリックします。
[自分と共有] タブで、プロバイダーを見つけて選択します。
SQL
ノートブックまたは Databricks SQL クエリ エディターで次のコマンドを実行します。
DESC PROVIDER <provider-name>;
DESC PROVIDERの詳細については、DESCRIBE PROVIDERを参照してください。
CLI
Databricks CLI を使用して次のコマンドを実行します。
databricks providers get <provider-name>
プロバイダーが共有している共有を表示する
プロバイダーが共有している共有を表示するには、カタログ エクスプローラー、Databricks Unity Catalog CLI、または Azure Databricks ノートブックや Databricks SQL クエリ エディターで SHOW SHARES IN PROVIDER SQL コマンドを使用することができます。
必要なアクセス許可: メタストア管理者、USE PROVIDER 特権を持つユーザー、またはプロバイダー オブジェクト所有者。
カタログ エクスプローラー
Azure Databricks ワークスペースで、[
カタログ。
[カタログ] ウィンドウの上部にある
歯車アイコンをクリックして、[Delta Sharing] を選択します。
または、右上隅の > をクリックします。
[自分と共有] タブで、プロバイダーを見つけて選択します。
SQL
ノートブックまたは Databricks SQL クエリ エディターで次のコマンドを実行します。 必要に応じて、<pattern> をLIKE の述語 に置き換えます。
SHOW SHARES IN PROVIDER [LIKE <pattern>];
SHOW SHARES IN PROVIDERの詳細については、SHOW SHARES IN PROVIDERを参照してください。
CLI
Databricks CLI を使用して次のコマンドを実行します。
databricks providers list-shares <provider-name>
プロバイダーを更新する (名前の変更、所有者の変更、コメント)
Unity Catalog メタストア内のプロバイダー オブジェクトを変更するには、カタログ エクスプローラー、Databricks Unity Catalog CLI、または Azure Databricks ノートブックや Databricks SQL クエリ エディターで ALTER PROVIDER SQL コマンドを使用することができます。
- プロバイダーの名前を変更して、ユーザーが Databricks インターフェイスでプロバイダー オブジェクトを表示する方法を変更する。
- プロバイダー オブジェクトの所有者を変更する。
- コメントを追加または変更する。
必要なアクセス許可 : 所有者を更新するには、プロバイダー オブジェクトの所有者である必要があります。 プロバイダー名を更新するには、メタストア管理者 (または CREATE PROVIDER 特権を持つユーザー) であり、"かつ" プロバイダー所有者である必要があります。 コメントを更新するには、所有者である必要があります。 最初の所有者はメタストア管理者です。
カタログ エクスプローラー
Azure Databricks ワークスペースで、[
カタログ。
[カタログ] ウィンドウの上部にある
歯車アイコンをクリックして、[Delta Sharing] を選択します。
または、右上隅の > をクリックします。
[自分と共有] タブで、プロバイダーを見つけて選択します。
詳細ページで、所有者、コメント、またはプロバイダー名を更新します。
プロバイダーの名前を変更するには、
をクリックします。kebab メニューをクリックし、[ 名前の変更] を選択します。
SQL
ノートブックまたは Databricks SQL クエリ エディターで次のコマンドを実行します。
ALTER PROVIDER <provider-name> RENAME TO <new-provider-name>
OWNER TO <new-owner>
COMMENT "<comment>";
ALTER PROVIDERの詳細については、ALTER PROVIDERを参照してください。
CLI
Databricks CLI を使用して次のコマンドを実行します。
<provider-name> を現在のプロバイダー名に置き換え、<new-provider-name> を新しい名前に置き換えます。
databricks providers update <provider-name> /
--new-name <new-provider-name> /
--comment "<new comment>" /
--owner <new-owner-name>
開いている受信者の資格情報をローテーションする
このセクションは、認証の種類が TOKEN、 OAUTH_CLIENT_CREDENTIALS、または OIDC_FEDERATIONを持つプロバイダー オブジェクトに適用されます。 Databricks から Databricks へのプロバイダー (認証の種類 DATABRICKS) は自動的にローテーションされます。 プロバイダー オブジェクトなしでデータにアクセスする場合 (たとえば、delta-sharing Python コネクタや Spark コネクタを使用する場合)、コネクタ構成に新しい資格情報ファイルを適用します。
ベアラー トークンを使用したオープン共有として差分共有を使用して共有されたデータを読み取る方法をご覧ください。。
オープン共有プロトコルを使用するプロバイダーは、ベアラー トークンをローテーションし、新しい資格情報ファイルを送信する場合があります。 その場合は、Databricks REST API を使用してプロバイダー オブジェクトを更新します。 プロバイダーを削除してから再作成して、新しい資格情報を適用しないでください。 カタログは、名前ではなく、プロバイダーの内部 ID にバインドされます。 同じ名前のプロバイダーを再作成すると、カタログの共有データへの接続が切断されます。
ALTER PROVIDER、Databricks CLI、およびカタログ エクスプローラーでは、プロバイダー資格情報の更新はサポートされていません。
資格情報を更新する
PATCH フィールドの新しい資格情報ファイルの内容を使用して、recipient_profile_str要求をプロバイダー エンドポイントに送信します。
必要なアクセス許可: プロバイダー オブジェクト所有者またはメタストア管理者。
Python
受信者ワークスペースのノートブックから次を実行します。
<provider-name>をメタストア内のプロバイダー オブジェクトの名前に置き換え、new_profileを新しい資格情報ファイルの値に更新します。
import json
import requests
new_profile = {
"shareCredentialsVersion": 1,
"bearerToken": "<new-bearer-token>",
"endpoint": "https://<provider-workspace>.cloud.databricks.com/api/2.0/delta-sharing/metastores/<metastore-id>",
}
token = (
dbutils.notebook.entry_point.getDbutils()
.notebook()
.getContext()
.apiToken()
.get()
)
workspace_url = spark.conf.get("spark.databricks.workspaceUrl")
response = requests.patch(
f"https://{workspace_url}/api/2.1/unity-catalog/providers/<provider-name>",
headers={
"Authorization": f"Bearer {token}",
"Content-Type": "application/json",
},
json={"recipient_profile_str": json.dumps(new_profile)},
)
print(response.status_code)
print(response.json())
curl
curl --request PATCH \
--header "Authorization: Bearer $DATABRICKS_TOKEN" \
--header "Content-Type: application/json" \
--url "https://<databricks-instance>/api/2.1/unity-catalog/providers/<provider-name>" \
--data '{
"recipient_profile_str": "<contents of the new credential file>"
}'
ローテーションが成功すると、プロバイダーの更新されたメタデータを含む次の応答が返されます。
{
"name": "<provider-name>",
"authentication_type": "TOKEN",
"owner": "user@example.com",
"recipient_profile": {
"share_credentials_version": 1,
"endpoint": "https://<provider-workspace>.cloud.databricks.com/api/2.0/delta-sharing/metastores/<metastore-id>"
},
"updated_at": 1775804332820,
"updated_by": "user@example.com",
"id": "abcd2a5b-c18e-46eb-ae11-3056cfe99bef"
}
詳細については、プロバイダー REST API の更新に関するページを 参照してください。
回転を確認する
カタログ、スキーマ、およびテーブルに引き続きアクセス可能であることを確認します。 カタログ名は、ローテーション前と同じである必要があります。
カタログ エクスプローラー
Azure Databricks ワークスペースで、[
カタログ。
[カタログ] ウィンドウの上部にある
歯車アイコンをクリックして、[Delta Sharing] を選択します。
または、右上隅の > をクリックします。
[ 自分と共有 ] タブで、プロバイダーを見つけます。
以前のエラー バナーが表示されなくなり、共有が再び一覧表示されます。 一覧表示されているカタログは、以前と同じにする必要があります。
SQL
ノートブックまたは Databricks SQL クエリ エディターで次の SQL を実行します。
-- The catalog name should match what it was before rotation
SHOW CATALOGS;
-- Schemas in the shared catalog should still appear
SHOW SCHEMAS IN <catalog-name>;
-- Tables should still appear
SHOW TABLES IN <catalog-name>.<schema-name>;
-- A read from a shared table should return data
SELECT * FROM <catalog-name>.<schema-name>.<table-name> LIMIT 10;
クエリが成功した場合、ローテーションは完了し、既存のすべてのクエリ、ジョブ、ダッシュボードは引き続き機能します。
トラブルシューティング
| エラー | 修正 |
|---|---|
リクエストが返す 403 Forbidden |
資格情報をローテーションするには、プロバイダーの所有者またはメタストア管理者である必要があります。 メタストア管理者にローテーションの適用または所有権の譲渡を依頼します。 「共有を更新する」を参照してください。 |
リクエストの戻り値 404 Not Found |
プロバイダー名が正しくありません。
SHOW PROVIDERSを実行して、メタストア内の正確な名前を一覧表示します。 |
要求は、"受信者プロファイルを更新できません" というメッセージを含む 400 Bad Request を返します |
API は、 TOKEN、 OAUTH_CLIENT_CREDENTIALS、および OIDC_FEDERATION プロバイダーについてのみ資格情報を更新します。 Databricks から Databricks への共有の場合、資格情報は自動的にローテーションされます。 |
クエリが返す TABLE_OR_VIEW_NOT_FOUND |
カタログ名が正しくないか、カタログからプロバイダーへのバインドが壊れている可能性があります。
SHOW CATALOGSを実行し、SHOW SCHEMAS IN <catalog-name>してカタログが存在することを確認します。 |
カタログ エクスプローラーでは、 PATCHが成功した後に古いデータまたはエラーが表示されます。 |
ローテーションの前からキャッシュされた結果が表示されます。 ページを更新するか、数分待ちます。 |
プロバイダーを削除する
プロバイダーを削除するには、Azure Databricks ノートブックまたは Databricks SQL クエリ エディターで、カタログ エクスプローラー、Databricks CLI、または DROP PROVIDER SQL コマンドを使用できます。 プロバイダーを削除するには、プロバイダー オブジェクト所有者である必要があります。
プロバイダーを削除すると、自分と組織内のユーザー (受信者) は、プロバイダーによって共有されているデータにアクセスできなくなります。
必要なアクセス許可: プロバイダー オブジェクト所有者。
カタログ エクスプローラー
Azure Databricks ワークスペースで、[
カタログ。
[カタログ] ウィンドウの上部にある
歯車アイコンをクリックして、[Delta Sharing] を選択します。
または、右上隅の > をクリックします。
[自分と共有] タブで、プロバイダーを見つけて選択します。
をクリックします。kebab メニューをクリックし、[削除] を選択します。
確認のダイアログで [削除] をクリックします。
SQL
ノートブックまたは Databricks SQL クエリ エディターで次のコマンドを実行します。
DROP PROVIDER [IF EXISTS] <provider-name>;
DROP PROVIDERの詳細については、DROP PROVIDERを参照してください。
CLI
Databricks CLI を使用して次のコマンドを実行します。
databricks providers delete <provider-name>
操作が成功した場合、結果は返されません。