Lakehouse フェデレーションとは

重要

この機能はパブリック プレビュー段階にあります。

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

Lakehouse フェデレーションとは

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

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

Lakehouse フェデレーションを使用する理由

Lakehouse は、データの冗長性と分離を減らすために、データの中央ストレージを強調しています。 組織には運用環境に多数のデータ システムがあり、接続されているシステムのデータに対してさまざまな理由でクエリを実行することが必要になる場合があります。

  • カスタム レポート。
  • 概念実証作業。
  • 新しい ETL パイプラインまたはレポートの探索フェーズ。
  • 増分移行中のワークロードのサポート。

これらの各シナリオでは、クエリ フェデレーションを使用すると、適切な場所でデータをクエリでき、複雑で時間のかかる ETL 処理を回避できるため、より迅速に分析情報を得ることができます。

Lakehouse フェデレーションは次のような場合のユースケースを対象としています。

  • Azure Databricks にデータを取り込む必要はありません。
  • クエリで外部データベース システムのコンピューティングを利用したいと考えています。
  • Unity Catalog インターフェイスと、きめ細かいアクセス制御、データ系統、検索などのデータ ガバナンスの利点を必要としています。

Lakehouse フェデレーションのセットアップの概要

Lakehouse フェデレーを使用してデータセットを読み取り専用クエリに使用できるようにするには、次のものを作成します。

  • 接続 、外部データベース システムにアクセスするためのパスと認証情報を指定する Unity Catalog 内のセキュリティ保護可能なオブジェクト。
  • 外部カタログ、外部データ システムのデータベースをミラーリングする Unity Catalog のセキュリティ保護可能なオブジェクト。これにより、Azure Databricks ワークスペースでそのデータ システムに対して読み取り専用クエリを実行できるようになり、Unity Catalog を使用してアクセスが管理されます。

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

Lakehouse フェデレーションは、次の種類のデータベースへの接続をサポートしています。

接続の要件

ワークスペースの要件:

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

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

  • Databricks Runtime クラスターまたは SQL ウェアハウスから対象となる データベース システムに接続するためのネットワーク接続。 「レイクハウス フェデレーションのためのネットワークに関する推奨事項」を参照してください。
  • Azure Databricks クラスターでは、Databricks Runtime 13.3 LTS 以降、および共有またはシングルユーザー アクセス モードを使用する必要があります。
  • SQL ウェアハウスは、Pro またはサーバーレスである必要があります。

必要なアクセス許可:

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

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

接続を作成する

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

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

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

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

  2. 左側のペインで [外部データ] メニューを展開し、[接続] を選択します。

  3. [接続の作成] をクリックします。

  4. わかりやすい接続名を入力します。

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

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

    接続の種類ごとに異なる接続情報が必要になります。 左側の目次に記載されている、接続の種類に応じた記事を参照してください。

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

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

  9. Create をクリックしてください。

Sql

ノートブックまたは Databricks SQL クエリ エディターで次のコマンドを実行します。 この例は、PostgreSQL データベースへの接続を対象としています。 オプションは接続の種類によって異なります。 左側の目次に記載されている、接続の種類に応じた記事を参照してください。

CREATE CONNECTION <connection-name> TYPE postgresql
OPTIONS (
  host '<hostname>',
  port '<port>',
  user '<user>',
  password '<password>'
);

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

CREATE CONNECTION <connection-name> TYPE postgresql
OPTIONS (
  host '<hostname>',
  port '<port>',
  user secret ('<secret-scope>','<secret-key-user>'),
  password secret ('<secret-scope>','<secret-key-password>')
)

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

既存の接続の管理については、「Lakehouse フェデレーションの接続の管理」を参照してください。

外部カタログを作成する

外部カタログは、外部データ システム内のデータベースをミラーリングし、Azure Databricks と Unity Catalog を使ってそのデータベース内のデータに対するクエリの実行とアクセス管理ができるようにします。 外部カタログを作成するには、定義済みのデータ ソースへの接続を使用します。

外部カタログを作成するには、Catalog Explorer を使うか、Azure Databricks ノートブックまたは Databricks SQL クエリ エディターで CREATE FOREIGN CATALOG SQL コマンドを使います。

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

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

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

  2. [カタログの作成] ボタンをクリックします。

  3. [新しいカタログの作成] ダイアログで、カタログの名前を入力し、[外部][種類] を選択 します。

  4. Unity Catalog のカタログとしてミラーリングするデータベースへのアクセスを提供する接続を選択します。

  5. カタログとしてミラーリングするデータベースの名前を入力します。

    要件は、データ ソースによって異なります。

    • MySQL は 2 層の名前空間を使用するため、データベース名は必要ありません。
    • 別の Databricks ワークスペースのカタログに接続する場合は、データベース名の代わりに Databricks Catalog 名を入力します。
  6. [Create (作成)] をクリックします。

Sql

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

    • <catalog-name>: Azure Databricks 内のカタログの名前。
    • <connection-name>: データ ソース、パス、アクセス資格情報を指定する接続オブジェクト
    • <database-name>: Azure Databricks でカタログとしてミラーリングするデータベースの名前。 2 層の名前空間を使用する MySQL には必要ありません。
    • <external-catalog-name>: Databricks 間のみ: ミラーリングしている外部 Databricks ワークスペース内のカタログの名前。 「外部カタログを作成する」を参照してください。
    CREATE FOREIGN CATALOG [IF NOT EXISTS] <catalog-name> USING CONNECTION <connection-name>
    OPTIONS (database '<database-name>');
    

外部カタログの管理と操作については、「外部カタログの管理と操作」を参照してください。

Lakehouse フェデレーションと具体化されたビュー

Databricks では、具体化されたビューを作成するときに Lakehouse フェデレーションを使って外部データを読み込むことが推奨されます。 「Databricks SQL の具体化されたビューを使用する」を参照してください。

Lakehouse フェデレーションを使う場合、ユーザーは次のようにフェデレーション データを参照できます。

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

制限事項

  • クエリは読み取り専用です。

  • 接続のスロットリングは、Databricks SQL の同時クエリ制限を使用して決定されます。 接続あたりのウェアハウス間での制限はありません。 プロおよびクラシックの SQL ウェアハウスのキューと自動スケーリングに関するページを参照してください。

  • Unity Catalog で無効な名前を持つテーブルとスキーマはサポートされておらず、外部カタログの作成時に Unity Catalog によって無視されます。 「Unity Catalog の制限事項」で名前付けルールと制限事項の一覧を参照してください。

  • Unity カタログでは、テーブル名とスキーマ名は小文字に変換されます。 また、検索には小文字の名前も使用する必要があります。 小文字の名前が重複するテーブルまたはスキーマがある場合、どちらか一方のテーブルまたはスキーマのみが外部カタログにインポートされます。

  • 参照される外部テーブルごとに、Azure Databricks はリモート システムでサブクエリをスケジュールして、そのテーブルからデータのサブセットを返し、その結果を 1 つのストリームで 1 つの Azure Databricks Executor タスクに返します。

  • シングル ユーザー アクセス モードは、接続を所有するユーザーのみが使用できます。

  • Lakehouse Federation では、Azure Synapse 接続または Redshift 接続の大文字と小文字を区別する識別子を持つ外部テーブルをフェデレーションすることはできません。