次の方法で共有


別の Databricks ワークスペースでフェデレーション クエリを実行する

この記事では、別の Databricks ワークスペースにある Databricks データに対してフェデレーション クエリを実行できるように、レイクハウス フェデレーションを設定する方法について説明します。 Lakehouse フェデレーションの詳細については、「Lakehouse フェデレーションとは?」を参照してください。

重要

Databricks-to-Databricks Lakehouse フェデレーションは、別の Databricks ワークスペースの Hive または AWS Glue メタストアで管理されているデータに対してクエリを実行するための優れたツールです。 以下のようなほとんどのシナリオでは、他の Azure Databricks ワークフローの方が効率的です。

  • Azure Databricks ワークスペースが同じ Unity Catalog メタストアを共有している場合は、標準の Unity Catalog クエリとデータ ガバナンス ツールを使用して、ワークスペース間クエリを管理できます。
  • 別の Unity Catalog メタストアにアタッチされた Databricks ワークスペースのデータに読み取り専用でアクセスする場合は、Azure Databricks アカウントにあるかどうかにかかわらず、Delta Sharing を使用することをお勧めします。

これらのいずれのシナリオでも、Lakehouse フェデレーションを設定する必要はありません。

Lakehouse フェデレーションを使って別のワークスペースの Databricks カタログに接続するには、Azure Databricks の Unity Catalog メタストアで以下を作成する必要があります。

  • Databricks ワークスペースのクラスターまたは SQL ウェアハウス。
  • クラスターまたは SQL ウェアハウスへの接続
  • Unity Catalog メタストアでクラスターまたは SQL ウェアハウスからアクセスできる他の Databricks カタログをミラーリングする外部カタログ。これにより、Unity Catalog のクエリ構文とデータ ガバナンス ツールを使って、Azure Databricks ユーザーのデータへのアクセスを管理できるようになります。

開始する前に

ワークスペースの要件:

  • Unity Catalog を使用できるワークスペース。

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

  • コンピューティング リソースからターゲット データベース システムへのネットワーク接続。 「レイクハウス フェデレーションのためのネットワークに関する推奨事項」を参照してください。
  • Azure Databricks コンピューティングでは、Databricks Runtime 13.3 LTS 以降を使用し、Standard または デディケート アクセス モードを使用する必要があります。
  • SQL ウェアハウスはプロまたはサーバーレスである必要があり、2023.40 以降を使用する必要があります。

必要なアクセス許可:

  • 接続を作成するには、メタストア管理者であるか、ワークスペースにアタッチされている Unity Catalog メタストアに対する CREATE CONNECTION 特権を持つユーザーである必要があります。
  • 外部カタログを作成するには、メタストアに対する CREATE CATALOG 権限を持ち、接続の所有者であるか、接続に対する CREATE FOREIGN CATALOG 特権を持っている必要があります。

追加の権限要件は、以下の各タスク ベースのセクションで規定されています。

また、接続の構成に使用している Azure Databricks ワークスペースに、アクティブなクラスターまたは SQL ウェアハウスが必要です。

接続を作成する

接続では、外部データベース システムにアクセスするためのパスと資格情報を指定します。 接続を作成するには、Catalog Explorer を使用するか、Azure Databricks ノートブックまたは Databricks SQL クエリ エディターで CREATE CONNECTION SQL コマンドを使用します。

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

必要な権限: メタストア管理者、または CREATE CONNECTION 特権を持つユーザー。

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

  1. Azure Databricks ワークスペースで、[ データ] アイコンをクリックします。カタログ

  2. [カタログ] ペインの上部にある 追加またはプラス アイコン[追加] アイコンをクリックし、メニューから [接続の追加] を選択します。

    または、[クイック アクセス] ページで、[外部データ >] ボタンをクリックし、[接続] タブに移動し、[接続の作成] をクリックします。

  3. 接続 のセットアップ ウィザードの [接続の基本] ページで、わかりやすい 接続名入力します。

  4. Databricks[接続の種類] を選択します。

  5. (省略可能) コメントを追加します。

  6. [次へ] をクリックします。

  7. [ 認証 ] ページで、他の Databricks インスタンスの次の接続プロパティを入力します。

    • ホスト: ワークスペース インスタンス名。 ワークスペース インスタンス名を取得する方法については、「ワークスペース オブジェクトの識別子を取得する」を参照してください。
    • 個人用アクセス トークン: ターゲット ワークスペースへのアクセスを有効にする Azure Databricks 個人用アクセス トークン。 トークンの取得方法については、「Azure Databricks 個人アクセス トークン認証」をご覧ください。 接続する場合、Databricks では、サービス プリンシパルに個人用アクセス トークンを使用することをお勧めします。
    • HTTP パス: SQL ウェアハウスの HTTP パス。 パスを取得するには、サイドバーの [SQL] > [SQL ウェアハウス] に移動し、SQL ウェアハウスを選択し、[接続の詳細] タブに移動して、[HTTP パス] の値をコピーします。
  8. [接続の作成] をクリックします。

  9. [ カタログの基本 ] ページで、このメタストアのカタログ オブジェクトにマップできる他の Azure Databricks ワークスペースにカタログ名を入力します。

  10. (省略可能) [接続のテスト] をクリックして、動作することを確認します。

  11. カタログを作成 をクリックします。

  12. [Access] ページで、作成したカタログにユーザーがアクセスできるワークスペースを選択します。 [すべてのワークスペースにアクセス権を持たせる] を選択するか、[ワークスペースへの割り当て] をクリックしてワークスペースを選択し、[割り当て] をクリックします。

  13. カタログ内のすべてのオブジェクトへのアクセスを管理できる 所有者 を変更します。 テキストボックスに主要項目を入力し、表示された結果からその項目をクリックします。

  14. カタログに関する権限 を付与します。 [許可] をクリックします。

    1. カタログ内のオブジェクトにアクセスできる プリンシパル を指定します。 テキストボックスに主要項目を入力し、表示された結果からその項目をクリックします。
    2. 各プリンシパルに付与する 特権プリセット を選択します。 既定では、すべてのアカウント ユーザーに BROWSE が付与されます。
      • ドロップダウン メニューから [データ 閲覧者 を選択して、カタログ内のオブジェクトに対する read 権限を付与します。
      • ドロップダウン メニュー データ エディター を選択して、カタログ内のオブジェクトに対する read 権限と modify 権限を付与します。
      • 付与する特権を手動で選択します。
    3. [許可] をクリックします。
  15. [次へ] をクリックします。

  16. [メタデータ] ページで、タグのキーと値のペアを指定します。 詳細については、「Unity カタログのセキュリティ保護可能なオブジェクトにタグを適用する」を参照してください。

  17. (省略可能) コメントを追加します。

  18. [保存] をクリックします。

SQL

ノートブックまたは Databricks SQL クエリ エディターで、以下の内容に置き換える次のコマンドを実行します。

  • <connection-name>: 作成する接続のユーザーフレンドリーな名前。
  • <workspace-instance>: ターゲット ワークスペース インスタンス。 ワークスペース インスタンス名を取得する方法については、「ワークスペース オブジェクトの識別子を取得する」を参照してください。
  • <sql-warehouse-path>: SQL ウェアハウスの HTTP パス。 パスを取得するには、サイドバーの [SQL] > [SQL ウェアハウス] に移動し、SQL ウェアハウスを選択し、[接続の詳細] タブに移動して、[HTTP パス] の値をコピーします。
  • <personal-access-token>: ターゲット ワークスペースへのアクセスを有効にする Azure Databricks 個人用アクセス トークン。 トークンの取得方法については、「Azure Databricks 個人アクセス トークン認証」をご覧ください。 接続の場合、Databricks では、サービス プリンシパルの個人用アクセス トークンを使用することをお勧めします。
CREATE CONNECTION <connection-name> TYPE databricks
OPTIONS (
  host '<workspace-instance>',
  httpPath '<sql-warehouse-path>',
  personalAccessToken '<personal-access-token>'
);

資格情報などの機密性の高い値には、プレーンテキストの文字列ではなく Azure Databricks のシークレットを使用することをお勧めします。 次に例を示します。

CREATE CONNECTION <connection-name> TYPE databricks
OPTIONS (
  host '<workspace-instance>',
  httpPath '<sql-warehouse-path>',
  personalAccessToken secret ('<secret-scope>','<secret-key-password>')
)

シークレットの設定については、「シークレットの管理」を参照してください。

外部カタログを作成する

UI を使用してデータ ソースへの接続を作成する場合は、外部カタログの作成が含まれるので、この手順は省略できます。

外部カタログは、外部 Databricks ワークスペースのカタログをミラー化して、その外部 Databricks カタログのデータへのアクセスを、独自のワークスピースのカタログであるかのようにクエリを実行し、管理できるようにします。 外部カタログを作成するには、定義済みの外部 Databricks ワークスペースへの接続を使用します。

外部カタログを作成するには、Catalog Explorer を使用するか、Azure Databricks ノートブックまたは Databricks SQL クエリ エディターで CREATE FOREIGN CATALOG SQL コマンドを使用します。 Databricks REST API または Databricks CLI を使用してカタログを作成することもできます。 POST /api/2.1/unity-catalog/catalogs および Unity Catalog コマンドを参照してください。

必要なアクセス許可: メタストアに対する CREATE CATALOG アクセス許可と、接続の所有権または接続に対する CREATE FOREIGN CATALOG 特権。

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

  1. Azure Databricks ワークスペースで、[ データ] アイコンをクリックします。カタログ をクリックしてカタログ エクスプローラーを開きます。

  2. [カタログ] ペインの上部にある 追加またはプラス アイコン[追加] アイコンをクリックし、メニューから [カタログの追加] を選択します。

    または、[クイック アクセス] ページで、[カタログ] ボタンをクリックし、[カタログの作成] ボタンをクリックします。

  3. カタログを作成する」で外部カタログを作成する手順に従います。

SQL

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

  • <catalog-name>: 作成する外部カタログの名前。
  • <connection-name>: データ ソース、パス、アクセス資格情報を指定する接続オブジェクト
  • <external-catalog-name>: ミラーリングしている外部 Databricks ワークスペースのカタログの名前。
CREATE FOREIGN CATALOG [IF NOT EXISTS] <catalog-name> USING CONNECTION <connection-name>
OPTIONS (catalog '<external-catalog-name>');

サポートされているプッシュダウン

すべてのコンピューティングで以下のプッシュダウンがサポートされています:

  • フィルター
  • プロジェクション
  • 極限
  • 関数: フィルター式のみがサポートされています (文字列関数、数学関数、データ関数、時刻関数、タイムスタンプ関数、その他 Alias、Cast、SortOrder などの関数)。

Databricks Runtime 13.3 LTS 以上および SQL ウェアハウス コンピューティングでは、以下のプッシュダウンがサポートされています。

  • 集計
  • ブール演算子: =、<、<=、>、>=、<=>
  • 数学関数 (ANSI が無効な場合はサポートされません): +、-、*、%、/
  • その他の演算子: ^、|、~
  • 制限付きで使用した場合の並べ替え

以下のプッシュダウンはサポートされていません。

  • 結合
  • Windows 関数