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

プレビュー

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

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

重要

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

  • Databricks ワークスペースが同じ Unity Catalog メタストアを共有している場合は、標準の Unity Catalog クエリー ツールとデータガバナンス ツールを使用して、クロスワークスペース クエリーを管理できます。

  • Databricks アカウント内にあるかどうかにかかわらず、別の Unity Catalog メタストアに接続されている Databricks ワークスペース内のデータに 読み取り専用 でアクセスする場合は、 Delta Sharing を選択することをお勧めします。

どちらのシナリオでもレイクハウスフェデレーションを設定する必要はありません。

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

  • Databricks ワークスペース内のクラスターまたは SQLウェアハウス。

  • クラスターまたは SQLウェアハウス への接続

  • クラスターまたは SQLウェアハウスからアクセスできる他の Databricks カタログをミラーリングする Unity Catalog メタストア内の 外部カタログ で、 Unity Catalog クエリー構文ツールとデータガバナンスツールを使用してデータへの Databricks ユーザー アクセスを管理できます。

始める前に

ワークスペースの要件:

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

コンピュート 要件:

  • Databricks Runtime クラスターまたは SQLウェアハウスからターゲット データベース システムへのネットワーク接続。レイクハウスフェデレーションのネットワークに関する推奨事項を参照してください。

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

  • SQLウェアハウスは Pro またはサーバレスである必要があります。

必要な権限:

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

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

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

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

接続を作成する

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

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

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

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

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

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

  5. [接続タイプ] として [Databricks] を選択します。

  6. 他の Databricks インスタンスの次の接続プロパティを入力します。

    • ホスト: ワークスペース インスタンス名。 ワークスペース インスタンス名を取得する方法については、「 ワークスペース オブジェクトの識別子を取得する」を参照してください。

    • HTTP パス: SQLウェアハウスの HTTP パス。パスを取得するには、サイドバーの [SQL > SQL ウェアハウス] に移動し、SQL ウェアハウスを選択し、[ 接続の詳細 ] タブに移動して、[ HTTP パス] の値をコピーします。

    • Personal アクセストークン: ターゲット ワークスペースへのアクセスを可能にする Databricks 個人用アクセストークン。トークンを取得する方法については、「Databricks 個人用アクセストークン認証」を参照してください。接続の場合、Databricks では、サービスプリンシパルに個人用アクセストークンを使用することをお勧めします。

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

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

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

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

  • <connection-name>: 作成する接続のわかりやすい名前。

  • <workspace-instance>: ターゲット ワークスペース インスタンス。 ワークスペース インスタンス名を取得する方法については、「 ワークスペース オブジェクトの識別子を取得する」を参照してください。

  • <sql-warehouse-path>: SQLウェアハウスの HTTP パス。 パスを取得するには、サイドバーの [SQL > SQL ウェアハウス] に移動し、SQL ウェアハウスを選択し、[ 接続の詳細 ] タブに移動して、[ HTTP パス] の値をコピーします。

  • <personal-access-token>: ターゲット ワークスペースへのアクセスを可能にする Databricks 個人用アクセストークン。 トークンを取得する方法については、「 Databricks 個人用アクセストークン認証」を参照してください。 接続の場合、Databricks では、サービスプリンシパルの個人用アクセストークンを使用することをお勧めします。

CREATE CONNECTION <connection-name> TYPE databricks
OPTIONS (
  host '<workspace-instance>',
  httpPath '<sql-warehouse-path>',
  personalAccessToken '<personal-access-token>'
);

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

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

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

外部カタログの作成

外部カタログは、外部 Databricks ワークスペース内のカタログをミラーリングするため、その外部 Databricks カタログ内のデータへのアクセスを、独自の Workpsace のカタログであるかのように管理できます。 外部カタログを作成するには、既に定義されている外部 Databricks ワークスペースへの接続を使用します。

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

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

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

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

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

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

  5. ターゲット Databricks カタログ 名を入力します。

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

ノートブックまたは 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 以降および SQLwarehouse コンピュートでサポートされています。

  • 集計

  • 次のBoolean演算子: =、<、<=、>、>=、<=>

  • 次の数学関数 (ANSI が無効になっている場合はサポートされません): +、-、*、%、/

  • その他の演算子: ^、|、~

  • 並べ替え (制限付きで使用した場合)

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

  • テーブル結合(join)

  • Windows の機能