次の方法で共有


Livy API を使用して、ユーザー資格情報を使用して Spark セッション ジョブを送信および実行する

適用対象:✅ Microsoft Fabric でのデータ エンジニアリングとデータ サイエンス

Lakehouse を作成して、Livy API for Fabric Data Engineering の使用を開始します。Microsoft Entra トークンを使用した認証。Livy API エンドポイントを検出する。リモート クライアントから Fabric Spark コンピューティングにバッチ ジョブまたはセッション ジョブを送信する。結果を監視します。

前提条件

REST API クライアントの選択

さまざまなプログラミング言語または GUI クライアントを使用して、REST API エンドポイントを操作できます。 この記事では、Visual Studio Code 使用します。 Visual Studio Code は、Jupyter NotebooksPySpark、および Microsoft Authentication Library (MSAL) for Python で構成する必要があります

Entra SPN トークンを使用して Livy API 要求を承認する方法

Livy API を含む Fabric API を操作するには、まず Microsoft Entra アプリケーションを作成し、シークレットを作成し、コードでそのシークレットを使用する必要があります。 Fabric に対して API 呼び出しを実行するには、アプリケーションを登録して適切に構成する必要があります。 詳細については、「Microsoft Entra ID でのアプリケーション資格情報の追加と管理」を参照してください。

アプリの登録を作成したら、クライアント シークレットを作成します。

Entra アプリの登録とクライアント シークレットの追加を示すスクリーンショット。

  1. クライアント シークレットを作成するときは、必ず値をコピーしてください。 これはコードの後半で必要になりますが、シークレットを再度表示することはできません。 コード内のシークレットに加えて、アプリケーション (クライアント) ID とディレクトリ (テナント ID) も必要です。

  2. 次に、クライアント シークレットをワークスペースに追加する必要があります。

    [アクセス オプションの管理] Lakehouse の設定を示すスクリーンショット。

  3. Entra クライアント シークレットを検索し、そのシークレットをワークスペースに追加し、新しく追加されたシークレットに管理者アクセス許可があることを確認します。

    ワークスペースへの新しい SPN サービス プリンシパルの追加を示すスクリーンショット。

Entra アプリ トークンを使用して Livy API 要求を承認する方法

Livy API を含む Fabric API を操作するには、まず Microsoft Entra アプリケーションを作成し、トークンを取得する必要があります。 Fabric に対して API 呼び出しを実行するには、アプリケーションを登録して適切に構成する必要があります。 詳細については、Microsoft ID プラットフォームにアプリケーションを登録する方法に関するページを参照してください。

Livy ジョブの実行に必要な Microsoft Entra スコープのアクセス許可は多数あります。 この例では、単純な Spark コード + ストレージ アクセス + SQL を使用します。

  • Code.AccessAzureDataExplorer.All

  • Code.AccessAzureDataLake.All

  • Code.AccessAzureKeyvault.All

  • Code.AccessFabric.All

  • Code.AccessStorage.All

  • Item.ReadWrite.All

  • Lakehouse.Execute.All

  • Workspace.ReadWrite.All

    Microsoft Entra 管理センターの Livy API アクセス許可を示すスクリーンショット。

パブリック プレビュー中は、より細かいスコープがいくつか追加されるため、これらのスコープが変更される可能性があります。 これらのスコープの変更が発生すると、Livy アプリが壊れる可能性があります。 追加のスコープで更新されるので、この一覧を確認してください。

一部のお客様には、前のリストよりも詳細なアクセス許可が必要です。 Item.ReadWrite.All を削除し、より詳細なスコープのアクセス許可に置き換えることができます。

  • Code.AccessAzureDataExplorer.All
  • Code.AccessAzureDataLake.All
  • Code.AccessAzureKeyvault.All
  • Code.AccessFabric.All
  • Code.AccessStorage.All
  • Lakehouse.Execute.All
  • Lakehouse.ReadWrite.All
  • Workspace.ReadWrite.All
  • Notebook.ReadWrite.All
  • SparkJobDefinition.ReadWrite.All
  • MLModel.ReadWrite.All
  • MLExperiment.ReadWrite.All
  • Dataset.ReadWrite.All

アプリケーションを登録するときは、アプリケーション (クライアント) ID とディレクトリ (テナント) ID の両方が必要です。

Microsoft Entra 管理センターの Livy API アプリの概要を示すスクリーンショット。

Livy API を呼び出す認証済みユーザーは、API とデータ ソース項目の両方が共同作成者ロールで配置されているワークスペース メンバーである必要があります。 詳しくは、ワークスペースへのアクセス権のユーザーへの付与に関する記事をご覧ください。

Fabric Livy API エンドポイントを検出する方法

Livy エンドポイントにアクセスするには、レイクハウス アーティファクトが必要です。 レイクハウスが作成されると、Livy API エンドポイントを設定パネル内に配置できます。

レイクハウス設定の Livy API エンドポイントを示すスクリーンショット。

Livy API のエンドポイントは、次のパターンに従います。

https://api.fabric.microsoft.com/v1/workspaces/><ws_id>/lakehouses/<lakehouse_id>/livyapi/versions/2023-12-01/

URL には、選択した内容に応じて、<sessions> または <batches> が追加されます。

Livy API Swagger ファイルをダウンロードする

Livy API の完全な swagger ファイルは、ここで入手できます。

Livy API ジョブを送信する

Livy API のセットアップが完了したら、バッチ ジョブまたはセッション ジョブを送信できます。

Fabric 環境との統合

既定では、この Livy API セッションはワークスペースの既定のスターター プールに対して実行されます。 または、Microsoft Fabric の 環境を作成、構成、使用して、 Livy API セッションがこれらの Spark ジョブに使用する Spark プールをカスタマイズすることもできます。

Livy Spark セッションで Fabric Environment を使用するには、json を更新してこのペイロードを含めます。

create_livy_session = requests.post(livy_base_url, headers = headers, json={
    "conf" : {
        "spark.fabric.environmentDetails" : "{\"id\" : \""EnvironmentID""}"}
    }
)

Livy Spark バッチ セッションでファブリック環境を使用するには、次に示すように json ペイロードを更新するだけです。

payload_data = {
"name":"livybatchdemo_with"+ newlakehouseName,
"file":"abfss://YourABFSPathToYourPayload.py", 
"conf": {
    "spark.targetLakehouse": "Fabric_LakehouseID",
    "spark.fabric.environmentDetails" : "{\"id\" : \""EnvironmentID"\"}"  # remove this line to use starter pools instead of an environment, replace "EnvironmentID" with your environment ID
    }
}

要求履歴を監視する方法

監視ハブを使用して以前の Livy API の送信を確認し、送信エラーをデバッグできます。

監視ハブの以前の Livy API 申請を示すスクリーンショット。