Palantir Foundryカタログフェデレーション
プレビュー
この機能は パブリック プレビュー段階です。
Palantir Foundry カタログフェデレーションを使用すると、Unity Catalogはクラウドストレージから直接Palantir Foundry Icebergテーブルを読み取ることができます。
カタログフェデレーションを使用すると、Unity Catalog はクラウドストレージ内の Palantir Foundry Iceberg テーブルにアクセスし、クエリーは完全に Databricks コンピュート上で実行されます。データチームは、ETL パイプラインを構築することなく、Databricks から Palantir Foundry データを検出、ガバナンス、クエリーできます。データアクセスは読み取り専用です。
始める前に
Palantir Foundryカタログフェデレーションを設定する前に、以下の要件を確認してください。
ワークスペースの要件:
- ワークスペースで Unity Catalog が有効になっている必要があります。Unity Catalog の利用開始を参照してください。
- この機能はパブリック プレビュー段階であるため、ワークスペース管理者が ワークスペース プレビュー ページから有効にする必要があります。ワークスペース レベルのプレビューを管理するを参照してください。
コンピュートの要件:
- Databricks コンピュートでは、Databricks Runtime 18 以降を使用する必要があります。
- SQLウェアハウスはProまたはServerlessである必要があります。
- 専用クラスター (以前の単一ユーザークラスター) はサポートされていません。
ネットワーク要件:
- コントロールプレーンとデータプレーンの両方のDatabricksエグレスIP範囲を、Palantir Foundryで許可リストに登録する必要があります。Foundryでのイングレスの構成およびレイクハウスフェデレーションのネットワーキングに関する推奨事項を参照してください。
必要な権限:
- 接続を作成するには、メタストア管理者か、ワークスペースに接続されているUnity Catalogメタストアの
CREATE CONNECTION権限を持つユーザーである必要があります。 - フォーリンカタログを作成するには、メタストアに対する
CREATE CATALOG権限が必要です。また、接続を所有しているか、接続に対するCREATE FOREIGN CATALOG権限を持っている必要があります。
Palantir Foundry の要件:
- Palantir Foundryテーブルは、Icebergテーブルである必要があります。
- 認証用のPalantir Foundryサードパーティアプリケーション。認証方法に従ってアプリケーションを構成します:
-
OAuth ユーザーマシン間 (U2M) :
- アプリケーションは
api:iceberg-readおよびoffline_accessスコープをサポートする必要があります。 - アプリケーションにはOAuthリダイレクトURL
https://<databricks-workspace-url>/login/oauth/lakehousefederation.htmlが設定されている必要があります。ここで、<databricks-workspace-url>はワークスペースのホスト名です。 - 接続を認証するユーザーは、フェデレーションされた ルートフォルダ へのアクセス権を持っている必要があります。
- アプリケーションは
-
OAuth マシン間 (M2M) :
- アプリケーションは、クライアント認証情報付与(client credentials grant)および
api:iceberg-readスコープをサポートしている必要があります。 - アプリケーションの背後にあるサービスユーザーは、フェデレーションされたルートフォルダにアクセスできる必要があります。
- アプリケーションは、クライアント認証情報付与(client credentials grant)および
-
ステップ 1: 接続を作成する
必要な権限: メタストア管理者またはCREATE CONNECTION権限を持つユーザー。
接続では、外部システムにアクセスするためのパスと認証情報を指定します。これは、フェデレーション対象のフォルダではなく、Palantir Foundryホストと認証に使用する認証情報を識別します。ステップ2: フォーリンカタログを作成する でフォーリンカタログを作成する際に、ルートフォルダ を選択します。
Palantir Foundryフェデレーションは、以下のサブセクションで説明されている2つの認証方法をサポートしています。どちらも、Palantir Foundryのサードパーティアプリケーションを必要とします。
Databricks REST API または Databricks CLI を使用して接続を作成することもできます。 POST /api/2.1/unity-catalog/connections および Unity Catalog コマンドを参照してください。
OAuth ユーザーマシン間 (U2M)
With OAuth User to Machine (U2M), Unity Catalog accesses Foundry as the user who authenticates the connection.カタログエクスプローラを使用して、この接続を作成します。OAuthサインインフローにはUIが必要なため、このメソッドはSQLを使用して設定することはできません。
- Databricks ワークスペースで、
カタログ をクリックします。
- カタログ ペインの上部で、
追加 アイコンをクリックし、メニューから 接続を作成 を選択します。
- 接続のセットアップ ウィザードの 接続の基本 ページで、ユーザー・フレンドリーな 接続名 を入力します。
- 接続タイプ で Palantir Foundry を、 認証タイプ で OAuth ユーザーからマシン を選択し、 次へ をクリックします。
- Authentication ページで、Palantir Foundry インスタンスの Host (例:
your-company.palantirfoundry.com) を入力し、OAuth サインインフローを完了して接続を承認します。 - (オプション)コメントを追加します。
- 接続の作成 をクリックします。
OAuth マシン間 (M2M) 認証
OAuthマシン間(M2M)認証を使用すると、Unity Catalogはクライアント認証情報付与を使用して、サードパーティアプリケーションの背後にあるサービスユーザーとしてFoundryにアクセスします。カタログエクスプローラーを使用するか、DatabricksノートブックまたはDatabricks SQLクエリーエディタで CREATE CONNECTION SQLコマンドを使用して、この接続を作成します。
- Catalog Explorer
- SQL
-
Databricks ワークスペースで、
カタログ をクリックします。
-
カタログ ペインの上部で、
追加 アイコンをクリックし、メニューから 接続を作成 を選択します。
-
接続のセットアップ ウィザードの 接続の基本 ページで、ユーザー・フレンドリーな 接続名 を入力します。
-
接続タイプ で Palantir Foundry を、 認証タイプ で OAuth Machine to Machine を選択し、 次へ をクリックします。
-
認証 ページで、次のように入力します。
- Host : Palantir Foundry インスタンスのホスト名 (例:
your-company.palantirfoundry.com)。 - クライアント ID : Palantir Foundry サードパーティアプリケーションのクライアント ID。
- クライアント シークレット : Palantir Foundryサードパーティアプリケーションのクライアント シークレット。
- Host : Palantir Foundry インスタンスのホスト名 (例:
-
(オプション)コメントを追加します。
-
接続の作成 をクリックします。
ノートブックまたはDatabricks SQLクエリーエディタで次のコマンドを実行します。 プレースホルダーの値を置き換えます。
<connection-name>:Databricksにおける接続名。<palantir-host>:Palantir Foundryインスタンスのホスト名(例:your-company.palantirfoundry.com)。<client-id>:Palantir FoundryサードパーティアプリケーションのクライアントID。<secret-scope>および<secret-key>:Palantir Foundryサードパーティアプリケーションからのクライアントシークレットを格納するSecret Scopeとキー。
CREATE CONNECTION <connection-name> TYPE PALANTIR
OPTIONS (
host '<palantir-host>',
client_id '<client-id>',
client_secret secret('<secret-scope>','<secret-key>')
);
Databricksでは、クライアントシークレットなどの機密性の高い値には、プレーンテキストの文字列の代わりに シークレット を使用することをお勧めします。シークレットの設定に関する情報については、「シークレット管理」を参照してください。
ステップ2:フォーリンカタログを作成する
必要な権限: メタストアの CREATE CATALOG 権限、接続の所有権または接続の CREATE FOREIGN CATALOG 権限。
フォーリンカタログは、Palantir Foundryのルートフォルダをミラーリングするため、DatabricksとUnity Catalogを使用して、そのテーブルへのアクセスをクエリーおよび管理できます。フォーリンカタログを作成するには、ステップ1: 接続の作成で作成した接続を使用します。
カタログエクスプローラーを使用するか、DatabricksノートブックまたはDatabricks SQLクエリーエディターで CREATE FOREIGN CATALOG SQLコマンドを使用して、フォーリンカタログを作成します。
- Catalog Explorer
- SQL
- Databricks ワークスペースで、
[カタログ]をクリックして カタログエクスプローラー を開きます。
- カタログ ペインの上部で、
追加 アイコンをクリックし、メニューから[ カタログを追加 ]を選択します。
- カタログ名 を入力し、カタログの タイプ で 外部 を選択します。
- ドロップダウンメニューから、ステップ1: 接続の作成 で作成した 接続 を選択します。
- ルートフォルダ には、Unity Catalogがフェデレーション対象のスキーマやテーブルを検索するPalantir Foundryフォルダを入力します(例:
/space-name/project-name/folder-name)。ルートフォルダと名前空間のマッピングを参照してください。 - Storage location フィールドで、このカタログ内のIcebergテーブルのメタデータを保存する書き込み可能なクラウドストレージの場所を指定します。Databricksマネージドサービスアカウントには、それに対する読み取り/書き込みアクセス権が必要です。この場所には任意のストレージバケットを指定でき、テーブルバケットに関連している必要はありません。
- [ カタログを作成 ] をクリックします。
- プロンプトに従って、ワークスペースへのアクセス権、所有者、および権限を割り当てます。
ノートブックまたはDatabricks SQLクエリーエディタで次のコマンドを実行します。 括弧内の項目はオプションです。プレースホルダーの値を置き換えます。
<catalog-name>:Databricksのカタログの名前。<connection-name>: ステップ1:接続を作成するで作成した接続の名前。<root-folder>:Unity Catalog がフェデレーション対象のスキーマやテーブルを検索する Palantir Foundry フォルダ(例:/space-name/project-name/folder-name)。ルートフォルダと名前空間のマッピングを参照してください。<storage-location>: このカタログ内のIcebergテーブルのメタデータを保存する、書き込み可能なクラウドストレージの場所。Databricksマネージドサービスアカウントには、それに対する読み取り/書き込みアクセス権が必要です。この場所には任意のストレージバケットを指定でき、テーブルバケットに関連している必要はありません。
CREATE FOREIGN CATALOG [IF NOT EXISTS] <catalog-name>
USING CONNECTION <connection-name>
OPTIONS (
root_folder '<root-folder>',
storage_root '<storage-location>'
);
Unity Catalogは、ルートフォルダーの下にあるフォルダーとテーブルを検出します:
- Palantir Foundry のサブフォルダーは Unity Catalog スキーマになります。
- Palantir FoundryのIcebergテーブルは、Unity Catalogのフォーリンテーブルになります。
ステップ3:権限を付与し、カタログをクエリーする
カタログフェデレーションを設定した後、ユーザーがフェデレーションテーブルにアクセスするには、適切な Unity Catalog 権限が必要です:
- すべてのユーザーは、カタログに対して
USE CATALOG権限、スキーマに対してUSE SCHEMA権限が必要です。 - フェデレーションテーブルから読み取るには、ユーザーに
SELECT権限が必要です。
Unity Catalogの権限とそれらの付与方法の詳細については、「Unity Catalogでの権限の管理」を参照してください。
権限を付与した後、ユーザーはDatabricksからフォーリンテーブルをクエリーできます:
SELECT * FROM <catalog-name>.<schema>.<table>;
ルートフォルダと名前空間のマッピング
フォーリンカタログを作成する際は、フェデレーションルートとしてPalantir Foundryフォルダ(例: /space-name/project-name/folder-name)を指定します。Unity Catalogはそのサブフォルダをフォーリンスキーマにマッピングし、それらのサブフォルダ内のIcebergテーブルはUnity Catalogにおけるフォーリンテーブルとなります。これにより、より深い Foundry 階層が一貫した 3 レベルの構造にマッピングされます。
たとえば、ルートフォルダ /sales/orders をフェデレーションする場合:
Palantir Foundry object Unity Catalog object
──────────────────────────────────────────── ──────────────────────────────────────────────────
sales (Foundry Space)
└── orders (Foundry Project) <foreign-catalog> (Catalog)
└── shipments (Foundry Folder) <foreign-catalog>.shipments (Schema)
└── line_items (Iceberg Table) <foreign-catalog>.shipments.line_items (Table)
フェデレーションするフォルダーがカタログになり、各サブフォルダーがスキーマになり、各 Iceberg テーブルがフォーリンテーブルになります。
制限事項
Palantir Foundryのカタログフェデレーションには、次の制限があります:
- Palantir Foundry フェデレーションは、Iceberg テーブルのみにアクセスできます。ビューはサポートされていません。
- Palantir Foundry カタログへのプライベート接続はサポートされていません。
- スキーマ名とテーブル名は、標準の Unity Catalog の命名制限に従います。Databricks は、ピリオド (
.)、スペース ()、またはスラッシュ (/) を含む名前をサポートしていません。セキュリティ保護可能なオブジェクトの命名要件を参照してください。 - Foundry 内のシングルレベルフォルダであるルートフォルダ(テーブルのみを含み、スキーマにマッピングするサブフォルダを含まないフォルダ)には、スキーマやテーブルは表示されません。フェデレーションでは、Unity Catalog スキーマにマッピングするために、少なくとも 1 レベルのサブフォルダが必要です。
Iceberg 関連の制限事項については、「制限事項」を参照してください。
トラブルシューティング
次のセクションでは、一般的なエラーとその解決策について説明します。
Failed to create request URI または無効なルートフォルダ
root_folderオプションは、Palantir Foundryインスタンス内のフォルダーパスと一致しません。パスを確認してください。
接続作成時に認証が失敗しました
Palantir Foundryのサードパーティアプリケーションの認証情報が無効であるか、認証を行っているIDにフェデレーションルートフォルダーへのアクセス権がありません。クライアントIDとシークレット(OAuth M2Mの場合)を確認するか、再認証(OAuth U2Mの場合)を行い、そのIDにルートフォルダーへの権限があることを確認してください。「開始する前に」を参照してください。