Fabric で Apache Spark ジョブ定義を作成する方法

このチュートリアルでは、FabricでSparkジョブ定義を作成する方法を学びます。

Spark ジョブ定義の作成プロセスは迅速かつ簡単であり、いくつかの開始方法があります。

Sparkジョブの定義はFabricポータルから作成するか、Fabric REST APIを使って作成できます。 この記事では、Fabric ポータルから Spark ジョブ定義を作成することに重点を置いています。 REST API を使用した Spark ジョブ定義の作成については、 Apache Spark ジョブ定義 API v1Apache Spark ジョブ定義 API v2 を参照してください。

前提条件

作業を開始する前に、以下を行う必要があります。

  • アクティブなサブスクリプションが含まれる Fabric テナント アカウント。 無料でアカウントを作成できます
  • Fabricのワークスペース。 詳細については、「Fabricでワークスペースを作成管理」をご覧ください。
  • ワークスペース内の少なくとも 1 つのレイクハウス。 lakehouse は、Spark ジョブ定義の既定のファイル システムとして機能します。 詳細については、「 レイクハウスの作成」を参照してください。
  • Spark ジョブのメイン定義ファイル。 このファイルにはアプリケーション ロジックが含まれており、Spark ジョブを実行するために必須です。 各 Spark ジョブ定義に含めることができるメイン定義ファイルは 1 つだけです。

Spark ジョブ定義は、作成時に名前を付ける必要があります。 名前は現在のワークスペース内で一意である必要があります。 新しい Spark ジョブ定義は現在のワークスペースに作成されます。

Fabric ポータルで Spark ジョブ定義を作成する

Fabric ポータルで Spark ジョブ定義を作成するには、次の手順に従います。

  1. Fabric ポータルにサインインします。
  2. Spark ジョブ定義を作成する目的のワークスペースに移動します。
  3. 新しい項目>Spark ジョブ定義を選択します。
  4. [ 新しい Spark ジョブ定義 ] ウィンドウで、次の情報を指定します。
    • 名前: Spark ジョブ定義の一意の名前を入力します。
    • 場所: ワークスペースの場所を選択します。
  5. [ 作成] を選択して Spark ジョブ定義を作成します。

Spark ジョブ定義を作成するための代替エントリ ポイントは、Fabric ホーム ページの SQL ... タイルを使用したデータ分析 です。 [ 全般] タイルを選択すると、同じオプションを見つけることができます。

[ハブの作成] で Spark ジョブ定義を選択する場所を示すスクリーンショット。

タイルを選択すると、新しいワークスペースを作成するか、既存のワークスペースを選択するように求められます。 ワークスペースを選択すると、Spark ジョブ定義の作成ページが開きます。

PySpark の Spark ジョブ定義をカスタマイズする (Python)

PySpark の Spark ジョブ定義を作成する前に、Lakehouse にアップロードされたサンプル Parquet ファイルが必要です。

  1. サンプルの Parquet ファイル yellow_tripdata_2022-01.parquet をダウンロードします。
  2. ファイルをアップロードするレイクハウスに移動します。
  3. それを Lakehouse の [ファイル] セクションにアップロードします。

PySpark の Spark ジョブ定義を作成するには:

  1. 新しい Spark ジョブ定義を作成します。

  2. [言語] ドロップダウンから [PySpark (Python)] を選択します。

  3. createTablefromParquet.py サンプル定義ファイルをダウンロードします。 メイン定義ファイルとしてアップロードします。 メイン定義ファイル (job.Main) は、アプリケーション ロジックを含むファイルであり、Spark ジョブの実行に必須です。 Spark ジョブ定義ごとに、メイン定義ファイルを 1 つだけアップロードできます。

    Note

    このファイルは、ローカル デスクトップからメイン定義ファイルをアップロードすることも、ファイルの完全な ABFSS パスを指定して既存の Azure Data Lake Storage Gen2 (ADLS) からアップロードすることもできます。 たとえば、abfss://your-storage-account-name.dfs.core.windows.net/your-file-path のようにします。

  4. 必要に応じて、 .py (Python) ファイルとして参照ファイルをアップロードします。 参照ファイルは、メイン定義ファイルがインポートする Python モジュールです。 メイン定義ファイルと同様に、デスクトップまたは既存の ADLS Gen2 からアップロードできます。 複数の参照ファイルがサポートされています。

    ヒント

    ADLS Gen2 パスを使用する場合は、ファイルにアクセスできることを確認します。 ジョブを実行するユーザー アカウントに、ストレージ アカウントに対する適切なアクセス許可を付与する必要があります。 アクセス許可を付与する方法は 2 つあります。

    • ユーザー アカウントに、ストレージ アカウントに対する共同作成者ロールを割り当てます。
    • ADLS Gen2 アクセス制御リスト (ACL) を介して、ファイルのユーザー アカウントに読み取りおよび実行のアクセス許可を付与します。

    手動実行の場合、現在サインインしているユーザーのアカウントがジョブの実行に使用されます。

  5. 必要に応じて、ジョブにコマンド ライン引数を指定します。 引数を区切るにはスペースをスプリッターとして使用します。

  6. レイクハウス参照をジョブに追加します。 少なくとも 1 つのレイクハウス参照をジョブに追加する必要があります。 このレイクハウスは、ジョブの既定のレイクハウス コンテキストです。

    複数のレイクハウス参照がサポートされています。 既定以外のレイクハウス名と完全な OneLake URL を [Spark 設定]ページで確認します。

    メイン定義ファイルの設定画面の例を示すスクリーンショット。

Scala/Java 用の Spark ジョブ定義をカスタマイズする

Scala/Java 用の Spark ジョブ定義を作成するには:

  1. 新しい Spark ジョブ定義を作成します。

  2. [言語] ドロップダウンから Spark(Scala/Java) を選択します。

  3. メイン定義ファイルを .jar (Java) ファイルとしてアップロードします。 メイン定義ファイルは、このジョブのアプリケーション ロジックを含むファイルであり、Spark ジョブの実行に必須です。 Spark ジョブ定義ごとに、メイン定義ファイルを 1 つだけアップロードできます。 Main クラス名を指定します。

  4. 必要に応じて、 .jar (Java) ファイルとして参照ファイルをアップロードします。 参照ファイルは、メイン定義ファイルが参照/インポートするファイルです。

  5. 必要に応じて、ジョブにコマンド ライン引数を指定します。

  6. レイクハウス参照をジョブに追加します。 少なくとも 1 つのレイクハウス参照をジョブに追加する必要があります。 このレイクハウスは、ジョブの既定のレイクハウス コンテキストです。

R の Spark ジョブ定義をカスタマイズする

SparkR(R) 用の Spark ジョブ定義を作成するには:

  1. 新しい Spark ジョブ定義を作成します。

  2. [言語] ドロップダウンから [SparkR(R)] を選択します。

  3. メイン定義ファイルを .r (R) ファイルとしてアップロードします。 メイン定義ファイルは、このジョブのアプリケーション ロジックを含むファイルであり、Spark ジョブの実行に必須です。 Spark ジョブ定義ごとに、メイン定義ファイルを 1 つだけアップロードできます。

  4. 必要に応じて、参照ファイルを .r (R) ファイルとしてアップロードします。 参照ファイルは、メイン定義ファイルによって参照/インポートされるファイルです。

  5. 必要に応じて、ジョブにコマンド ライン引数を指定します。

  6. レイクハウス参照をジョブに追加します。 少なくとも 1 つのレイクハウス参照をジョブに追加する必要があります。 このレイクハウスは、ジョブの既定のレイクハウス コンテキストです。

Note

Spark ジョブ定義は、現在のワークスペースに作成されます。

Spark ジョブ定義をカスタマイズするオプション

Spark ジョブ定義の実行をさらにカスタマイズするためのオプションがいくつかあります。

  • Spark コンピューティング: [Spark コンピューティング ] タブには、Spark ジョブの実行に使用されている Fabric ランタイム バージョン が表示されます。 ジョブの実行に使用される Spark 構成設定も確認できます。 [ 追加 ] ボタンを選択して、Spark 構成設定をカスタマイズできます。

  • 最適化: [最適化] タブで、ジョブの再試行ポリシーを有効にして設定できます。 有効にすると、ジョブが失敗した場合に再試行されます。 最大再試行回数と再試行間隔を設定することもできます。 再試行するたびに、ジョブが再起動されます。 ジョブがべき等であることを確認します。

    再試行ポリシーを設定する場所を示すスクリーンショット。