この記事では、Azure Databricks サーバーレス コンピューティングを使用して OneLake に接続する方法について説明します。
[前提条件]
接続する前に、次の内容を確認してください。
- ファブリック ワークスペースとレイクハウス。
- Premium Azure Databricks ワークスペース。
- 少なくとも 共同作成者 ワークスペース ロールが割り当てられているサービス プリンシパル。
- シークレットを格納および取得するためのデータベース シークレットまたは Azure Key Vault (AKV)。 この例では、Databricks シークレットを使用します。
Databricks サーバーレス コンピューティングを使用して OneLake に接続する
Databricks サーバーレス コンピューティングを使用すると、クラスターをプロビジョニングせずにワークロードを実行できます。 Databricks サーバーレス ドキュメントによると、サーバーレス コンピューティングでの Spark の構成を自動化するために、Databricks サーバーレスでは 、サポートされている Spark プロパティのサブセットの構成のみが許可されます。
注
この制限は、Azure Databricks に固有の制限ではありません。 アマゾン ウェブ サービス (AWS) と Google Cloud での Databricks サーバーレス実装も同じ動作を示します。
Databricks サーバーレス コンピューティングにリンクされているノートブックでサポートされていない Spark 構成を変更または設定しようとすると、システムからCONFIG_NOT_AVAILABLE エラーが返されます。
OneLake では、Databricks サーバーレス コンピューティングからの受信接続がサポートされています。 適切なアクセス権があり、Databricks サーバーレス コンピューティングと OneLake の間にネットワーク パスがある場合は、Databricks サーバーレス コンピューティングから OneLake に接続できます。 Databricks サーバーレスでは、サポートされていない Spark プロパティがコードで変更されていないことを確認します。
ノートブックを作成する
Databricks ワークスペースにノートブックを作成し、サーバーレス コンピューティングにアタッチします。
Python モジュールをインポートする - このサンプルでは、次の 3 つのモジュールを使用します。
- msal は Microsoft Authentication Library (MSAL) であり、開発者が Microsoft ID プラットフォーム認証をアプリケーションに統合できるように設計されています。
- requests モジュールは、Python を使用して HTTP 要求を行うために使用されます。
- delta lake は、Python を使用して Delta Lake テーブルの読み取りと書き込みを行うために使用されます。
from msal import ConfidentialClientApplication import requests from deltalake import DeltaTableアプリケーション ID を含む Microsoft Entra テナントの変数を宣言します。 Microsoft Fabric がデプロイされているテナントのテナント ID を使用します。
# Fetch from Databricks secrets. tenant_id = dbutils.secrets.get(scope="<replace-scope-name>",key="<replace value with key value for tenant _id>") client_id = dbutils.secrets.get(scope="<replace-scope-name>",key="<replace value with key value for client _id>") client_secret = dbutils.secrets.get(scope="<replace-scope-name>",key="<replace value with key value for secret>")Fabric ワークスペース変数を宣言します。
workspace_id = "<replace with workspace name>" lakehouse_id = "<replace with lakehouse name>" table_to_read = "<name of lakehouse table to read>" storage_account_name = workspace_id onelake_uri = f"abfss://{workspace_id}@onelake.dfs.fabric.microsoft.com/{lakehouse_id}.lakehouse/Tables/{table_to_read}"トークンを取得するためにクライアントを初期化します。
authority = f"https://login.microsoftonline.com/{tenant_id}" app = ConfidentialClientApplication( client_id, authority=authority, client_credential=client_secret ) result = app.acquire_token_for_client(scopes=["https://onelake.fabric.microsoft.com/.default"]) if "access_token" in result: access_token = result["access_token"] print("Access token acquired.") token_val = result['access_token']OneLake からデルタ テーブルを読み取る
dt = DeltaTable(onelake_uri, storage_options={"bearer_token": f"{token_val}", "use_fabric_endpoint": "true"}) df = dt.to_pandas() print(df.head())注
サービス プリンシパルには 共同作成者 ワークスペース ロールの割り当てがあり、それを使用して OneLake にデータを書き戻すことができます。
上記の手順を完了したら、サーバーレス コンピューティングにアタッチされたノートブックである Databricks を使用して、OneLake からデータを読み取ることができます。