1.はじめに

皆さんこんにちは。
今回からLakehouseフェデレーションと外部カタログについて説明していきます。

現代のデータ環境で、組織は様々なソースからのデータを管理・分析する上で、以下のような課題に直面しています。

  • 分散データ:重要な情報、イレーションナルデータベース、クラウドストレージシステム、ビッグデータプラットフォームなど、複数のシステムに保存されています。
  • データアクセスの複雑さ:これらの複数のソースからデータにアクセスし分析するには、複数の処理手順、データの移動、複雑な統合が必要となる場合があります。
  • コストと遅延:システム間でデータ移動には費用がかかり、遅延が発生する可能性があり、分析のタイムリー性に影響を与えます。
  • セキュリティとアクセス管理:複数のシステムにわたるセキュリティ管理とアクセス権の一貫性を維持することは大きな課題です。
  • リアルタイム分析のニーズ:組織は迅速な意思決定を行うために、複数のソースからのデータをリアルタイムで分析する能力を必要としています。

これらの課題により、データの移動や複製を必要とせずに、複数のソースからのデータを効果的、安全、かつ柔軟に接続・クエリできるソリューションが必要とされています。レイクハウスフェデレーションは、これらの課題に対応するために作られました。

すべてのデータを一つの大きな保管場所に移動して分析する代わりに、レイクハウスフェデレーションでは、データを元の場所に置いたまま、それらを一緒に分析することができます。

2. 前提要件

実施する際の前提条件は以下の通りです。

  • 操作ユーザーは Azure Databricksの管理者アカウントとしてアカウント コンソールへアクセス権限があること。権限が付与されていない場合、管理者に権限を付与してもらう様に依頼してください。
  • ワークスペースでUnity Catalogが有効になっていること、またワークスペースがPremiumプランのアカウントで起動されていることが必要です。
  • 接続を作成するには、メタストア管理者であるか、ワークスペースにアタッチされているUnity Catalogメタストアに対するCREATE CONNECTION権限を持つユーザーである必要があります。
  • 外部カタログを作成するには、メタストアに対するCREATE CATALOG権限を持ち、接続の所有者であるか、接続に対するCREATE FOREIGN CATALOG権限を持っている必要があります。
  • Azure Databricksクラスターでは、Databricks Runtime 13.3 LTS 以降、および共有またはシングルユーザー アクセス モードを使用する必要があります。
  • SQLウェアハウスはProまたはサーバーレスである必要があり、かつ2023.40以上を使用する必要があります。

3. Lakehouseフェデレーションとは

  • Lakehouseフェデレーションは、Azure Databricksのクエリ フェデレーション プラットフォームです。 クエリ フェデレーションという用語は、すべてのデータを統合システムに移行することなく、ユーザーとシステムが複数のデータ ソースに対してクエリを実行できるようにする機能のコレクションを表します。
  • Pro SQLウェアハウス、サーバーレスSQLウェアハウス、Databricksランタイムクラスターに含まれるドライバーを使用して、一般的なデータベース ソリューションへの読み取り専用接続を構成します。

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

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

4. Lakehouseフェデレーションと操作

4-1.接続を作成する

接続を作成するには、2 つの方法があります。

  • 方法 1: カタログ エクスプローラー
  • 方法 2: SQL

方法 1: カタログ エクスプローラー

  • Azure Databricks ワークスペースで、「カタログ」をクリックします。
  • 「カタログ」 ペインの上部にある 「追加」アイコンをクリックし、メニューから「接続を作成」を選択します。

  • 「接続を確立する」画面が表示されたら、ステップ1の「接続の基本」で以下の情報を設定します。
  • 「接続名」: 接続名を入力します。 例:Databrick-SQL-Connection
  • 「接続タイプ」:ドロップダウンメニューから接続の種類を選択します。※今回の例として「SQL Server」にします。
  • 「認証タイプ」:ドロップダウンメニューから「ユーザー名とパスワード」を選択します。
    すべての設定が終わったら、「次のページ」ボタンをクリックします。

  • ステップ2の「検証」で接続プロパティ (ホスト情報、パス、アクセス資格情報など) を入力します。
  • 接続の種類ごとに異なる接続情報が必要になります。それから、「次のページ」ボタンをクリックします。

  • ステップ3の「接続の詳細」にて、接続先のサーバーが信頼できる場合のみ、「信頼できるサーバー証明書」のチェックボックスをオンにします。
  • 「Application intent」項目で、以下の場合によって適当な選択肢を選びます。
    ・データの参照のみを行う場合:「Read only」を選択します。
    ・データの更新も行う場合:「Read write」
    その後、「接続を更新」ボタンをクリックします。

  • 接続が作成されました。
    「カタログ」をクリックし、「外部データ」を選択します。それから、「接続」をクリックして接続が更新されたことを確認できます。

方法 2: SQL

ノートブックまたは SQLクエリ エディターで次のコマンドを実行します。 この例は、PostgreSQL データベースへの接続を対象としています。 オプションは接続の種類によって異なります。

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

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

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

4-2.外部カタログを作成する

外部カタログを作成するには、2 つの方法があります。

  • 方法 1: カタログ エクスプローラー
  • 方法 2: SQL

方法 1: カタログ エクスプローラー

  • Azure Databricksワークスペースで、「カタログ」をクリックしてカタログ エクスプローラーを開きます。
  • 「カタログ」ペインの上部にある  「追加」アイコンをクリックします。
  • メニューから「カタログを作成」を選択します。

  • 「新しいカタログの作成」ダイアログで、「Catalog name*」:カタログ名を入力します。例:「Foreign-Catalog」など
  • 「Type*」(カタログ タイプ):ドロップダウンメニューから「外部」を選択します。
    ※これは、Lakehouseフェデレーションを使用して外部データ システムのデータベースをミラーリングするセキュリティ保護可能なオブジェクトです。

  • 「接続*」:ドロップダウンメニューから選択します。
    ※これは前の手順で作成した接続です。
  • 「データベース」:データベース名を入力します。
  • 「接続のテスト」をクリックします。

  • 「テスト」をクリックします。

  • 「新規カタログを作成」ポップアップが表示されたら、「作成」をクリックして新しい外部カタログを作成します。

  • 新しい外部カタログが作成されました。
  • 「カタログを設定」をクリックします。

  • この外部カタログへの権限を持つユーザー、グループ、およびサービス プリンシパルを指定します。デフォルトでは、すべてのアカウント ユーザーにBROWSE権限があります。
  • 「付与」をクリックすると、ユーザーまたはグループに追加のカスタム権限を付与できます。
  • 「次のページ」ボタンをクリックします。

  • マークダウンコメントとタグを追加して、発見可能性とガバナンスを向上させます。
  • 「保存」をクリックして、外部カタログの作成と設定を完了します。

外部カタログ – 概要

外部カタログ – 詳細

  • 外部カタログ – 権限
    • デフォルトでは、すべてのアカウントユーザーに外部カタログに対する権限「BROWSE」(オブジェクトメタデータの読み取りが可能) が付与されます。

  • 外部カタログ – ワークスペース
    • デフォルトでは、すべてのワークスペースに外部カタログへのアクセス権が付与されます。

外部カタログのテーブル コンテンツの表示

方法 2: SQL

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

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

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

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

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

4-3.外部カタログ内のデータへの読み取り専用アクセス権を付与する

  • 「カタログ」をクリックします。
  • 許可を与える必要がある「foreign-catalog」を選択します。
  • 「権限」タブをクリックします。
  • 「付与」をクリックします。

  • プリンシパル: 割り当てるユーザーまたはグループを選択します。例:「カスタム グループ」など
  • 権限プリセット: ドロップダウンメニューから「データ リーダー」または「データ エディター」を選択することができます。

  • 権限プリセット「データ リーダー」と「データ エディター」の比較を行います。
  • 違いは「タグの適用」のみです。タグの適用により、プリンシパルはオブジェクトにタグを追加および編集できます。

  • 「権限プリセット」を選択します。例: データ リーダー など
  • 「確認」をクリックします。

割り当てられた権限を再度確認します。

4-4.ノートブックを使用してデータを取得する

テーブルは 2つあります。ノートブックを使用して、コースの平均成績を計算します。

以下のSQLコマンドをコピーしてノートブックに貼り付け、実行します。

実行後、結果が表示されていることを確認できます。

5.まとめ

本連載では、

Lakehouseフェデレーションと外部カタログについて説明しました。

今回の記事が少しでもDatabricksを知るきっかけや、業務のご参考になれば幸いです。

双日テックイノベーションでは、Azure Databricksの環境構築パッケージを用意しています。

Azure DatabricksやAzure活用、マイクロソフト製品の活用についてご相談事がありましたらぜひお問い合わせください!

・Azure Databricks連載シリーズはこちら

お問い合わせはこちら


この記事を読んだ方へのオススメコンテンツはこちら


この記事を書いた人

phongcq