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

プレビュー

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

この記事では、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 またはサーバレスである必要があります。

必要な権限:

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

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

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

接続 を作成する

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

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

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

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

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

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

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

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

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

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

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

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

ノートブックまたは Databricks 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 カタログを使用して、そのデータベース内のデータへのアクセスを管理できます。 外部カタログを作成するには、すでに定義されている DATA への接続を使用します。

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

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

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

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

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

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

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

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

    • MySQL は 2 層の名前空間を使用するため、データベース名は必要ありません。

    • 別の Databricks ワークスペース内のカタログに接続する場合は、データベース名ではなく Databricks カタログ 名を入力します。

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

  1. ノートブックまたは Databricks 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ウェアハウスのキューイングとオートスケール」を参照してください。

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

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

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

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

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