別の 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またはサーバーレスであり、2023.40以上を使用する必要があります。

必要な権限:

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

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

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

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

接続を作成する

接続では、外部データベース システムにアクセスするためのパスと資格情報を指定します。 接続を作成するには、カタログ エクスプローラーを使用するか、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. [接続タイプ] として [Databricks] を選択します。

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

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

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

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

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

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

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

ノートブックまたは 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 コマンドを使用できます。

注:

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

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

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

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

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

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

ノートブックまたは 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 の機能