メインコンテンツまでスキップ

レイクハウスフェデレーションとは何ですか?

この記事では、Databricksを使用して複数の外部データソースに対してクエリーを実行できるようにするクエリーフェデレーションプラットフォームである、レイクハウスフェデレーションについて説明します。また、レイクハウスフェデレーション 接続 を設定し、Unity Catalogメタストアに フォーリンカタログ を作成する方法についても説明します。

レイクハウスフェデレーションとは何ですか?

レイクハウスフェデレーションは、Databricksのクエリーフェデレーションプラットフォームです。 クエリーフェデレーション という用語は、すべてのユーザーを統一システムに移行しなくても、ユーザーとシステムが複数のデータソースに対してクエリーを実行できるようにする機能のコレクションを表します。

Databricks は Unity Catalog を使用してクエリのフェデレーションを管理します。 一般的なデータベース ソリューションへの読み取り専用接続は、Pro SQLウェアハウス、サーバレス SQLウェアハウス、および Databricks Runtime クラスターに含まれているドライバーを使用して構成します。 Unity Catalog のデータガバナンスツールとデータリネージツールにより、Databricks ワークスペース内のユーザーによって行われるすべてのフェデレーションクエリのデータアクセスが管理および監査されます。

なぜレイクハウスフェデレーションを使用するのですか?

レイクハウスでは、データの冗長性と分離を減らすために、データの中央ストレージを強調しています。 組織では、本番運用に多数のデータシステムがあり、次のような理由で接続されたシステムのデータをクエリーしたい場合があります。

  • アドホックなレポート
  • POC作業
  • 新しいETLパイプラインまたはレポートの調査段階
  • インクリメンタルマイグレーション中のワークロードのサポート

いずれのシナリオでも、クエリーフェデレーションを使用すると、その場でデータをクエリーでき、複雑で時間のかかるETL処理を回避できるため、より迅速に知見を得ることができます。

レイクハウスフェデレーションは、以下のような用途に適しています。

  • Databricksにデータを取り込みたくない
  • クエリで外部データベースシステムのコンピュートを活用したい
  • きめ細かなアクセス制御、データのリネージ、検索など、Unity Catalogのインターフェースとデータガバナンスのメリットを活用したい

レイクハウスフェデレーションのセットアップの概要

レイクハウスフェデレーションを使用してデータセットを読み取り専用クエリーに利用できるようにするには、以下を作成します。

  • 接続 :外部データベースシステムにアクセスするためのパスと認証情報を指定する、Unity Catalogのセキュアなオブジェクト。

  • 外部カタログ :外部データシステムのデータベースをミラーリングするUnity Catalog内の保護可能なオブジェクト。これにより、Databricksワークスペース内のそのデータシステムに対して読み取り専用クエリ^を実行でき、Unity Catalogを使用してアクセスを管理できます。

サポートされているデータソース

レイクハウスフェデレーションは、次のソースへの接続をサポートしています。

接続要件

ワークスペースの要件:

  • Unity Catalogのワークスペースが有効になっています。

コンピュートの要件:

  • コンピュート・リソースからターゲット・データベース・システムへのネットワーク接続。 「レイクハウスフェデレーションのネットワーキングに関する推奨事項」を参照してください。
  • Databricks コンピュートは、 Databricks Runtime 13.3 LTS 以上、 および標準 または 専用 アクセスモードを使用する必要があります。
  • SQLウェアハウスはProまたはServerlessで、2023.40以上を使用している必要があります。

必要な権限:

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

追加の権限要件は、以下の各タスクベースのセクションに記載しています。

接続を作成する

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

注記

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

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

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

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

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

  3. ユーザーフレンドリーな 接続名 を入力します。

  4. 接続タイプ (MySQLやPostgreSQLなどのデータベースプロバイダー)を選択します。

  5. (オプション)コメントを追加します。

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

  7. 接続プロパティ(ホスト情報、パス、アクセス資格情報など)を入力します。

    接続タイプごとに異なる接続情報が必要です。左側の目次に記載されている、接続タイプの記事を参照してください。

  8. 接続の作成 をクリックします。

  9. フォーリンカタログの名前を入力します。

  10. (オプション)[ 接続をテスト ]をクリックして、動作することを確認します。

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

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

  13. カタログ内のすべてのオブジェクトへのアクセスを管理できる 所有者 を変更します。テキスト ボックスにプリンシパルの入力を開始し、返された結果でプリンシパルをクリックします。

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

    1. カタログ内のオブジェクトにアクセスできる プリンシパル を指定します。テキスト ボックスにプリンシパルの入力を開始し、返された結果でプリンシパルをクリックします。

    2. 各プリンシパルに付与する 権限プリセット を選択します。デフォルトでは、すべてのアカウントユーザーに BROWSE が付与されます。

      • ドロップダウンメニューから「 データ閲覧者 」を選択して、カタログ内のオブジェクトに対する read 権限を付与します。
      • ドロップダウンメニューから「 データエディタ 」を選択して、カタログ内のオブジェクトに対する read 権限と modify 権限を付与します。
      • 付与する権限を手動で選択します。
    3. 付与 をクリックします。

    4. 次へ をクリックします。

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

    6. (オプション)コメントを追加します。

    7. 保存 をクリックします。

既存の接続の管理に関する情報については、「 レイクハウスフェデレーションの接続の管理」を参照してください。

フォーリンカタログの作成

注記

UI を使用してデータソースへの接続を作成する場合は、フォーリンカタログの作成が含まれているため、この手順をスキップできます。

フォーリンカタログは、外部データシステム内のデータベースをミラーリングするため、DatabricksとUnity Catalogを使用して、そのデータベース内のデータへのアクセスを管理できます。フォーリンカタログを作成するには、すでに定義されているデータソースへの接続を使用します。

フォーリンカタログを作成するには、Catalog ExplorerCREATE FOREIGN CATALOGSQL を使用するか、Databricks ノートブックまたは クエリSQL エディターの コマンドを使用します。Unity Catalog API を使用することもできます。 Databricks のリファレンス ドキュメントを参照してください。

フォーリンカタログのメタデータは、カタログとやり取りするたびにUnity Catalogに同期されます。Unity Catalogとデータソース間のデータ型マッピングについては、各データソースのドキュメントの 「データ型マッピング」 セクションを確認してください。

必要な権限: メタストアの CREATE CATALOG 権限、接続の所有権または接続の CREATE FOREIGN CATALOG 権限。

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

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

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

  3. 「カタログの作成」のフォーリンカタログの作成手順に従います。

フォーリンカタログの管理と操作に関する情報については、「 フォーリンカタログの管理と操作」を参照してください。

フォーリンテーブルからデータをロードする with マテリアライズドビュー

Databricks 、マテリアライズドビューを作成するときは、レイクハウスフェデレーションを使用して外部データをロードすることをお勧めします。 マテリアライズドビューを参照してください。

レイクハウスフェデレーションを使用すると、ユーザーは次のようにフェデレーションデータを参照できます。

SQL
CREATE MATERIALIZED VIEW xyz AS SELECT * FROM federated_catalog.federated_schema.federated_table;

システム生成の横串検索を表示する

レイクハウスフェデレーションは、 Databricks SQL ステートメントを、フェデレーテッドデータソースにプッシュダウンできるステートメントに変換します。 生成された SQL ステートメントを表示するには、 Query Profile のグラフ・ビューで外部データソース scan ノードをクリックするか、 EXPLAIN FORMATTED SQL ステートメントを実行します。 カバレッジについては、各データソースのドキュメントの 「サポートされているプッシュダウン 」セクションを参照してください。

制限

  • クエリは読み取り専用です。
  • 接続の調整は、 Databricks SQL 並列クエリの制限を使用して決定されます。 接続ごとにウェアハウス間での制限はありません。 「プロおよびクラシック SQLウェアハウスのキューイングとオートスケール」を参照してください。
  • Unity Catalog で無効な名前のテーブルとスキーマはサポートされておらず、フォーリンカタログの作成時に Unity Catalog によって無視されます。命名規則と制限のリストについては、 制限事項を参照してください。
  • テーブル名とスキーマ名は、 Unity Catalogでは小文字に変換されます。ルックアップでは、小文字の名前も使用する必要があります。小文字の名前が重複するテーブルまたはスキーマがある場合、テーブルまたはスキーマの 1 つだけがフォーリンカタログにインポートされます。
  • 参照されるフォーリンテーブルごとに、 Databricks は、リモート・システム内のサブクエリをスケジュールして、そのテーブルからデータのサブセットを戻し、その結果を 1 つのストリームで 1 つの Databricks エグゼキューター・タスクに返します。 結果セットが大きすぎると、エグゼキューターがメモリ不足で実行される可能性があります。
  • 専用アクセスモード (旧称シングルユーザーアクセスモード) は、接続を所有するユーザーのみが使用できます。
  • レイクハウスフェデレーションはAzure Synapse接続またはRedshift接続の大文字と小文字を区別する識別子を持つフォーリンテーブルをフェデレーションできません。

リソースクォータ

Databricks は、すべての Unity Catalog セキュリティ保護可能なオブジェクトにリソース クォータを適用します。 これらのクォータは、「 リソース制限」に記載されています。 フォーリンカタログとそれに含まれるすべてのオブジェクトは、クォータ使用量の合計に含まれます。

これらのリソース制限を超えることが予想される場合は、Databricksアカウントチームにお問い合わせください。

クォータの使用状況は、 Unity Catalog リソース クォータ APIsを使用して監視できます。 「Unity Catalog のリソース クォータの使用状況を監視する」を参照してください

追加のリソース