レイクハウスフェデレーションとは

プレビュー

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

この記事では、Databricks を使用して複数の外部 DATA に対してクエリーを実行できるようにするクエリー フェデレーション プラットフォームであるレイクハウス フェデレーションについて説明します。 また、レイクハウスフェデレーション 接続 を設定し、 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 Runtime クラスターまたは SQLウェアハウスからターゲット データベース システムへのネットワーク接続。レイクハウスフェデレーションのネットワークに関する推奨事項を参照してください。

  • Databricks クラスターでは、Databricks Runtime 13.3 LTS 以上と共有またはシングルユーザー アクセス モードを使用する必要があります。

  • SQLウェアハウスはProまたはサーバーレスであり、2023.40以上を使用する必要があります。

必要な権限:

  • 接続を作成するには、メタストア管理者であるか、ワークスペースにアタッチされている Unity Catalog メタストアに対する CREATE CONNECTION 権限を持つユーザーである必要があります。

  • フォーリンカタログを作成するには、メタストアに対する CREATE CATALOG 権限を持ち、接続の所有者であるか、接続に対する CREATE FOREIGN CATALOG 権限を持っている必要があります。

追加のアクセス許可要件は、以降の各タスクベースのセクションで指定されています。

接続を作成する

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

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

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

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

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

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

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

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

    接続の種類ごとに異なる接続情報が必要です。 左側の目次にリストされている接続の種類に関する記事を参照してください。

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

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

  8. [作成]をクリックします。

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

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

資格情報などの機密性の高い値には、プレーンテキスト文字列の代わりに 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>')
)

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

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

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

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

フォーリンカタログを作成するには、カタログ エクスプローラー、または Databricks ノートブックまたは SQL クエリ エディターのCREATE FOREIGN CATALOG SQL コマンドを使用できます。

注:

Unity Catalog API を使用することもできます。 Databricks リファレンス ドキュメントを参照してください。

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

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

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

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

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

  3. 「カタログの作成」のフォーリンカタログの作成手順に従ってください。

ノートブックまたは SQL クエリ エディターで次の SQL コマンドを実行します。 括弧内の項目はオプションです。 プレースホルダーの値を置き換えます。

  • <catalog-name>: Databricksのカタログの名前。

  • <connection-name>: データソース、パス、およびアクセス資格情報を指定する 接続オブジェクト

  • <database-name>: Databricks でカタログとしてミラー化するデータベースの名前。 2 層の名前空間を使用する MySQL には必要ありません。

  • <external-catalog-name>: DatabrickstoDatabricks のみ: ミラーリングする外部 Databricks ワークスペース内のカタログの名前。「フォーリンカタログの作成」を参照してください。

CREATE FOREIGN CATALOG [IF NOT EXISTS] <catalog-name> USING CONNECTION <connection-name>
OPTIONS (database '<database-name>');

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

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

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

制限

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

  • 接続の調整は、Databricks SQL 並列クエリーの制限を使用して決定されます。 接続ごとにウェアハウス間で制限はありません。 「 プロおよびクラシックSQLウェアハウスのキューイングとオートスケール」を参照してください。

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

  • テーブル名とスキーマ名は、 Unity Catalogでは小文字に変換されます。 ルックアップでは、小文字の名前も使用する必要があります。 小文字の名前が重複するテーブルまたはスキーマがある場合、テーブルまたはスキーマの 1 つだけがフォーリンカタログにインポートされます。

  • サーバーレス SQL ウェアハウスではプライベート リンクと静的 IP 範囲のサポートは利用できません。

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

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

  • レイクハウスフェデレーションはAzure Synapse接続またはRedshift接続の大文字と小文字を区別する識別子を持つフォーリンテーブルをフェデレーションできません。

関連リソース