Palantir Foundry カタログ フェデレーション

Important

この機能は パブリック プレビュー段階です

Palantir Foundryのカタログフェデレーションにより、Unity Catalogはクラウドストレージから直接Palantir Foundry Icebergのテーブルを読み取ることができます。

カタログフェデレーションにより、Unity Catalogはクラウドストレージ内のPalantir Foundry Icebergテーブルにアクセスし、クエリは完全にAzure Databricksコンピュート上で実行されます。 データチームはETLパイプラインを構築することなく、Azure DatabricksからPalantir Foundryのデータを発見、管理、照会できます。 データ アクセスは読み取り専用です。

始める前の準備

Palantir Foundryのカタログフェデレーションを設立する前に、以下の要件を確認してください。

ワークスペースの要件:

コンピューティング要件:

  • Azure DatabricksのコンピュートはDatabricks Runtime 18以上を使用しなければなりません。
  • SQLウェアハウスはプロかサーバーレスでなければなりません。
  • 専用クラスタ(かつては単一ユーザークラスタ)はサポートされていません。

ネットワーク要件:

必要なアクセス許可:

  • 接続を作成するには、メタストア管理者であるか、ワークスペースにアタッチされている 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 Machine to Machine (M2M):
      • アプリケーションはクライアントの資格付与と api:iceberg-read スコープをサポートしなければなりません。
      • アプリケーションの背後にあるサービスユーザーは、フェデレーテッド ルートフォルダへのアクセス権を持つ必要があります。

ステップ1:つながりを作る

必要な権限:Metastore管理者または CREATE CONNECTION 権限を持つユーザー。

接続は外部システムにアクセスするためのパスと認証情報を指定します。 それはPalantir Foundryのホストと認証用の認証情報を識別し、フェデレートするフォルダを識別するわけではありません。 ステップ2:外国カタログを作成する際にルートフォルダを選択します。

Palantir Foundryフェデレーションは、以下の小節で説明されている2つの認証方法をサポートしています。 どちらもPalantir Foundryの サードパーティアプリケーションが必要です。

Note

Databricks REST API または Databricks CLI を使用して接続を作成することもできます。 POST /api/2.1/unity-catalog/connections および Unity Catalog コマンドを参照してください。

OAuth ユーザー対マシン (U2M)

OAuth User to Machine(U2M)では、Unity Catalogは接続を認証するユーザーとしてFoundryにアクセスします。 この接続はカタログエクスプローラーを使って作成してください。 この方法はSQLでは設定できません。なぜならOAuthのサインインフローにはUIが必要だからです。

  1. Azure Databricks ワークスペースで、Data icon.Catalog をクリックします。
  2. [カタログ] ウィンドウの上部にある [追加] または [プラス] アイコンの [追加] アイコンをクリックし、メニューから [接続の作成] を選択します。
  3. 接続 のセットアップ ウィザードの [接続の基本] ページで、わかりやすい 接続名入力します。
  4. Palantir Foundry接続タイプOAuth User to Machine認証タイプを選択し、次にクリックします。
  5. 認証ページで、例えばyour-company.palantirfoundry.comPalantir Foundryインスタンスのホストを入力し、OAuthのサインインフローを完成させて接続を承認します。
  6. (省略可能)コメントを追加します。
  7. [接続の作成] をクリックします。

OAuth マシン対マシン (M2M)

OAuth Machine to M(M2M)では、Unity Catalogはクライアントの認証情報を使い、サードパーティアプリケーションの背後にあるサービスユーザーとしてFoundryにアクセスします。 この接続は、カタログエクスプローラーまたはAzure DatabricksノートブックのCREATE CONNECTION SQLコマンド、またはDatabricksのSQLクエリエディタを使って作成してください。

カタログ エクスプローラー

  1. Azure Databricks ワークスペースで、Data icon.Catalog をクリックします。
  2. [カタログ] ウィンドウの上部にある [追加] または [プラス] アイコンの [追加] アイコンをクリックし、メニューから [接続の作成] を選択します。
  3. 接続 のセットアップ ウィザードの [接続の基本] ページで、わかりやすい 接続名入力します。
  4. 接続タイプPalantir Foundry認証タイプOAuth Machine to Machineを選択し、その後次へをクリックします。
  5. [ 認証 ] ページで、次のように入力します。
    • ホスト:例えばPalantir Foundryインスタンスのホスト名 your-company.palantirfoundry.com
    • クライアントID:Palantir FoundryのサードパーティアプリケーションからのクライアントID。
    • クライアントシークレット:Palantir Foundryのサードパーティアプリケーションからのクライアントシークレットです。
  6. (省略可能)コメントを追加します。
  7. [接続の作成] をクリックします。

SQL

ノートブックまたは Databricks SQL クエリ エディターで次のコマンドを実行します。 プレースホルダー値を次のように置き換えます。

  • <connection-name>: Azure Databricks における接続の名称。
  • <palantir-host>例えば、Palantir Foundryインスタンスのホスト名 your-company.palantirfoundry.com
  • <client-id>: Palantir FoundryのサードパーティアプリケーションからのクライアントID。
  • <secret-scope> <secret-key>:Palantir Foundryのサードパーティアプリケーションからクライアントの秘密を保存する秘密のスコープとキー。
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のルートフォルダをミラーリングするため、Azure DatabricksやUnity Catalogを使ってテーブルへのアクセスを照会・管理できます。 外部カタログを作成するには、ステップ 1: 接続を作成 で作成した接続を使用します。

Catalog ExplorerやAzure DatabricksノートブックのCREATE FOREIGN CATALOG SQLコマンド、またはDatabricksのSQLクエリエディタを使って外国カタログを作成できます。

カタログ エクスプローラー

  1. Azure Databricks ワークスペースで、Data icon.Catalog をクリックしてカタログ エクスプローラーを開きます。
  2. [カタログ] ペインの上部にある 追加またはプラス アイコン[追加] アイコンをクリックし、メニューから [カタログの追加] を選択します。
  3. カタログ名を入力し、カタログの種類として [外部] を選択します。
  4. ステップ1で作成した 接続 を選択してください:ドロップダウンメニューから 接続を作成 してください。
  5. Root folder には、Unity Catalog がフェデレーションするスキーマとテーブルを検索する Palantir Foundry フォルダーを入力します(例: /space-name/project-name/folder-name)。 ルート フォルダと名前空間のマッピングを参照してください。
  6. ストレージロケーションフィールドでは、このカタログ内のアイスバーグテーブルのメタデータを格納する書き込み可能なクラウドストレージ場所を指定します。 Azure Databricks管理サービスアカウントは読み書きアクセス権を持つ必要があります。 この場所は任意のストレージバケットででき、テーブルバケットに関連している必要はありません。
  7. カタログを作成 をクリックします。
  8. ワークスペースのアクセス権、所有者、権限を指示に応じて割り当てます。

SQL

ノートブックまたは Databricks SQL クエリ エディターで次のコマンドを実行します。 角かっこ内の項目は省略可能です。 プレースホルダー値を次のように置き換えます。

  • <catalog-name>: Azure Databricks内のカタログの名前。
  • <connection-name>:ステップ1で作成した接続の名前 :接続を作成する
  • <root-folder>例えば、Unity CatalogがスキーマやテーブルをフェデレートするためのPalantir Foundryフォルダ(例えば /space-name/project-name/folder-name)を探す場所です。 ルート フォルダと名前空間のマッピングを参照してください。
  • <storage-location>: このカタログ内の Iceberg テーブルのメタデータを保存する、書き込み可能なクラウドストレージの保存先です。 Azure 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カタログ権限を持っている必要があります:

  • すべてのユーザーには、カタログとスキーマに対する USE CATALOGUSE SCHEMA のアクセス許可が必要です。
  • フェデレーテッドテーブルから読み込むには、ユーザーが SELECT 権限を必要とします。

Unity カタログの権限とその付与方法の詳細については、 Unity カタログでの権限の管理に関するページを参照してください。

権限を付与した後、ユーザーはAzure Databricksから外部テーブルをクエリできます:

SELECT * FROM <catalog-name>.<schema>.<table>;

ルートフォルダと名前空間のマッピング

外国カタログを作成する際は、Palantir Foundryのフォルダ(例えば /space-name/project-name/folder-name)をフェデレーションルートとして指定します。 Unity Catalogはサブフォルダを外部スキーマにマッピングし、それらのサブフォルダ内のIcebergテーブルはUnity Catalog内の外国テーブルとなります。 これにより、より深い鋳造所の階層構造が一貫した三層構造に結びつきます。

例えば、ルートフォルダーを /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テーブルは外部テーブルになります。

Limitations

Palantir Foundryカタログ連盟には以下の制限があります:

  • Palantir FoundryフェデレーションはIcebergテーブルのみにアクセスできます。 ビューはサポートされていません。
  • Palantir Foundryカタログへのプライベート接続はサポートされていません。
  • スキーマ名とテーブル名は、標準的なUnity Catalogの命名制限に従います。 Azure Databricksはピリオド(.)、スペース( )、スラッシュ(/)を含む名前をサポートしていません。 セキュリティ保護可能なオブジェクトの名前付けの要件を参照してください。
  • Foundryの単一レベルフォルダ(テーブルのみを含み、スキーマにマッピングするサブフォルダがないフォルダ)の ルートフォルダー は、スキーマやテーブルを一切表示しません。 フェデレーションでは、Unityカタログスキーマにマッピングするために少なくとも1レベルのサブフォルダが必要です。

アイスバーグに関連する制限については「 制限 事項」を参照してください。

Troubleshooting

以下の節では、一般的な誤りとその解決方法について説明します。

Failed to create request URI または無効なルートフォルダー

  • root_folderオプションはPalantir Foundryインスタンス内のフォルダパスと一致しません。 経路を確認してください。

接続作成時に認証が失敗しました

Palantir Foundryのサードパーティアプリケーション認証情報が有効でない場合、認証IDがフェデレーテッドルートフォルダにアクセスできません。 クライアントIDとシークレット(OAuth M2Mの場合)を確認するか、再認証(OAuth U2Mの場合)を行い、そのIDがrootフォルダに権限を持っているか確認してください。 開始する前にを参照してください。