このシナリオでは、Azure Databricks 経由で OneLake に接続する方法を示します。 このチュートリアルを完了すると、Azure Databricks ワークスペースから Microsoft Fabric Lakehouse を読み書きできるようになります。
[前提条件]
接続する前に、以下が必要になります。
- ファブリック ワークスペースとレイクハウス。
- Premium Azure Databricks ワークスペース。 このシナリオで必要な Microsoft Entra 資格情報パススルーは、Premium Azure Databricks ワークスペースでのみサポートされます。
Databricks ワークスペースを設定する
Azure Databricks ワークスペースを開き、[作成>クラスター] を選択します。
Microsoft Entra ID を使用して OneLake に対して認証を行うには、[詳細オプション] でクラスターで Azure Data Lake Storage (ADLS) 資格情報パススルーを有効にする必要があります。
注
サービス プリンシパルを使用して Databricks を OneLake に接続することもできます。 サービス プリンシパルを使用した Azure Databricks の認証の詳細については、「サービス プリンシパルの管理」を参照してください。
任意のパラメーターを使用してクラスターを作成します。 Databricks クラスターの作成の詳細については、「クラスターの 構成 - Azure Databricks」を参照してください。
ノートブックを開き、新しく作成したクラスターに接続します。
ノートブックを作成する
Fabric Lakehouse に移動し、Azure Blob Filesystem (ABFS) パスを lakehouse にコピーします。 [プロパティ] ウィンドウで見つけることができます。
注
Azure Databricks では、ADLS Gen2 と OneLake:
abfss://myWorkspace@onelake.dfs.fabric.microsoft.com/に対する読み取りと書き込み時にのみ、Azure Blob Filesystem (ABFS) ドライバーがサポートされます。Databricks ノートブックにレイクハウスへのパスを保存します。 この lakehouse では、後で処理されたデータを書き込みます。
oneLakePath = 'abfss://myWorkspace@onelake.dfs.fabric.microsoft.com/myLakehouse.lakehouse/Files/'Databricks パブリック データセットからデータフレームにデータを読み込みます。 Fabric の他の場所からファイルを読み取ったり、既に所有している別の ADLS Gen2 アカウントからファイルを選択したりすることもできます。
yellowTaxiDF = spark.read.format("csv").option("header", "true").option("inferSchema", "true").load("/databricks-datasets/nyctaxi/tripdata/yellow/yellow_tripdata_2019-12.csv.gz")データをフィルター処理、変換、または準備します。 このシナリオでは、データセットをトリミングして、読み込みを高速化したり、他のデータセットと結合したり、特定の結果に絞り込んだりすることができます。
filteredTaxiDF = yellowTaxiDF.where(yellowTaxiDF.fare_amount<4).where(yellowTaxiDF.passenger_count==4) display(filteredTaxiDF)OneLake パスを使用して、フィルター処理されたデータフレームを Fabric Lakehouse に書き込みます。
filteredTaxiDF.write.format("csv").option("header", "true").mode("overwrite").csv(oneLakePath)新しく読み込まれたファイルを読み取って、データが正常に書き込まれたことをテストします。
lakehouseRead = spark.read.format('csv').option("header", "true").load(oneLakePath) display(lakehouseRead.limit(10))
これでセットアップが完了し、Azure Databricks を使用して Fabric でデータを読み書きできるようになりました。
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 プロパティがコードによって変更されないようにする必要があります。
[前提条件]
接続する前に、以下が必要になります。
- ファブリック ワークスペースとレイクハウス。
- Premium Azure Databricks ワークスペース。
- 最小限でも共同作成者のワークスペース ロールが割り当てられているサービス プリンシパル。
- シークレットを格納および取得するためのデータベース シークレットまたは Azure Key Vault (AKV)。 この例では、Databricks シークレットを使用します。
ノートブックを作成する
Databricks ワークスペースにノートブックを作成し、サーバーレス コンピューティングにアタッチします。
Python モジュールをインポートする - このサンプルでは、次の 3 つのモジュールを使用しています。
- msal は Microsoft Authentication Library (MSAL) であり、開発者が Microsoft ID プラットフォーム認証をアプリケーションに統合できるように設計されています。
- 要求 モジュールは、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 からデータを読み取ることができます。