Microsoft Fabric の Data Engineering や Data Science ワークロードは Spark を基盤としています。特に小規模な Capacity を利用する場合、Spark の動作に制限がかかることがあるため、以下にそのポイントを整理しました。
Spark 実行環境:Starter Pool と Custom Pool
- Starter Pool:Fabric ワークスペース作成時に自動で構成され、常時起動状態のクラスタです。数秒〜十数秒で Spark セッションを開始できます。
- Custom Pool:ユーザーが任意のノードサイズで作成可能。Starter Pool が使えない環境(例:プライベートリンクや Managed VNet を有効化した場合)ではこちらを利用します。
プライベートリンクや Managed VNet など、高度なネットワーク構成を有効化したワークスペース利用時は Starter Pool 非対応です。
Spark Pool のノードサイズ
Size | vCore | Memory |
---|---|---|
Small | 4 | 32 GB |
Medium | 8 | 64 GB |
Large | 16 | 128 GB |
X-Large | 32 | 256 GB |
XX-Large | 64 | 512 GB |
Starter Pool は Medium 固定、Custom Pool は上記から選択可能です。
なお、Custom Pool は [ワークスペースの設定] → [データ エンジニアリング/サイエンス] → [Spark の設定] を開き、Starter Pool のプルダウンを開いて [新しいプール] をクリックすると作成できます。
Starter Pool の構成
Starter Pool は、Fabric Capacity の SKU (サイズ) によらず、以下の構成となっています。
構成の確認、変更はワークスペースの設定画面から、[データ エンジニアリング/サイエンス] を開き、[Spark の設定] で行います。
Starter pool の設定 | 既定値 |
---|---|
ノード ファミリ | Memory Optimized |
ノード サイズ | Medium |
ノード数 | 1-10 |
自動スケーリング | オン |
Executor の動的割り当て | オン |
Spark Pool については、他のドキュメントで異なる記載がある部分がありますが、こちらを正としてください。
容量ごとの Spark の制限
- 1 Capacity Unit (CU) = 2 Spark vCore
- Spark はバーストにより、購入した vCore の最大3倍まで使用可能
- 同時実行数(コンカレンシー)を増やすには、より大きな Capacity SKU が必要
ジョブがすべての Spark 仮想コアを同時に使用して、上記の制限に達すると、次のエラーが表示されます。
HTTP Response code 430: This Spark job can't be run because you have hit a Spark compute or API rate limit. To run this Spark job, cancel an active Spark job through the Monitoring hub, or choose a larger capacity SKU or try again later.
(HTTP 430: Spark ジョブが制限に達しました。現在のジョブをキャンセルするか、より大きな SKU を選択してください。)
容量サイズ (SKU) 別 Spark の制限一覧
Fabric の容量 SKU | 同等の Power BI SKU | Spark 仮想コア | バースト係数を使用した最大 Spark 仮想コア数 | キューの制限 |
---|---|---|---|---|
F2 | - | 4 | 20 | 4 |
F4 | - | 8 | 24 | 4 |
F8 | - | 16 | 48 | 8 |
F16 | - | 32 | 96 | 16 |
F32 | - | 64 | 192 | 32 |
F64 | P1 | 128 | 384 | 64 |
F128 | P2 | 256 | 768 | 128 |
F256 | P3 | 512 | 1536 | 256 |
F512 | P4 | 1024 | 3072 | 512 |
F1024 | P5 | 2048 | 6144 | 1024 |
F2048 | - | 4096 | 12288 | 2048 |
試用版 | P1 | 128 | 128 | NA |
上記の表は、後述する自動スケーリング課金では無効です。
F4 の場合、8 仮想コアが上限のため、Medium サイズの Spark Pool 1セッションで上限に達してしまいます。
起動の速い Starter Pool (ノードサイズが Medium で固定) で複数セッションを同時に実行するには、F8 以上が必要となります。
自動スケーリング課金 (サーバーレス)
「自動スケーリング」には2種類ありますが、ここでは後者の Capacity の自動スケーリング課金を指します。
-
Spark プールの自動スケーリング
アクティビティの量に基づいてコンピューティング リソース (Spark プールのノード数) を自動的にスケールアップおよびスケールダウンすること。 -
Capacity の自動スケーリング課金
Capacity に対する設定で、Spark ワークロードの処理に関する CU 消費を当該 Capacity から分離します。Spark ワークロードのみ、Databricks や Synapse Analytics のようなサーバーレスな課金体系になります。
自動スケーリング課金は容量単位での設定であり、Fabric 容量からバーストしたりフォールバックしたりすることはありません。 純粋にサーバーレスで従量課金制です。 自動スケーリングの課金を有効にし、上限を設定すると、実行したジョブによって消費された CU に対してのみ課金されます。
✅ コスト効率 – Spark ジョブ ランタイムに対してのみ支払います。
✅ 独立したスケーリング – Spark ワークロードは、他の容量ベースの操作に影響を与えずに実行されます。
✅ エンタープライズ対応 – Azure クォータ管理と統合して、柔軟性をスケーリングします。
Power BI の閲覧ユーザーのために F64 を利用している場合、Capacity の使用状況に余裕があるのであれば自動スケーリング課金にする必要はあまりないかもしれません。ただし、既に Capacity の使用率が高い状態である場合や、Spark ワークロードが他のワークロードに影響することを避けたい場合には、Spark ワークロードを Capacity から分離し、サーバーレスの課金体系で利用できるのでお勧めです。
Capacity を「予約」で購入している場合は、別課金となるため注意。
Capacity における Spark に関する設定
前述の通り、Spark プールの設定はワークスペースごとに行うのが基本ですが、容量管理者が Capacity (に属するワークスペース) に対して各種設定を行うことが可能です。
Spark の設定
[管理ポータル] → [容量の設定] → (容量を選択) → [詳細] → [データ エンジニアリング/サイエンスの設定] → [開く Spark の設定] と進みます。
-
カスタマイズされたワークスペース プール
この設定がオフになっていると、ワークスペース管理者は Custom Pool を作成できません。 -
ワークスペースのスターター プールを無効にする
無効にすると、スターター プールを表示しなくなります。 代わりに、容量管理者によって明示的に作成および管理されるカスタム プールを使用する必要があります。 -
ジョブ バーストを許可する
このスイッチを使用して、 スループットまたはコンカレンシーを最適化します。(この設定は、バーストを使用できない Capacity の自動スケーリング課金では無効です。)- 有効 (既定): スループット重視。1 つの Spark ジョブで、完全なバースト制限 (最大 3× Spark 仮想コア) を使用できます。
- 無効: コンカレンシー重視。個々の Spark ジョブは、基本容量の割り当てで制限され、マルチユーザー コンカレンシー (複数ユーザーによる同時実行) を維持し、独占を回避します。複数人で利用する開発環境用の Capacity の場合は、バーストを無効にすると良いでしょう。
Apache Spark の自動スケーリング課金
前述した自動スケーリング課金を設定します。有効にすると、Spark ジョブは共有容量を消費しなくなり、Spark ワークロードを個別にスケーリングし、コストを最適化する柔軟性が得られます。
スライダーを使用して、Spark ジョブに割り当てる最大容量ユニット (CU) を設定できます。
スライダーの上限は、Azure サブスクリプションに対して承認されたクォータに基づいており、使用しているサブスクリプションの種類にも基づいています。
リソースの使用量が定義済みのクォータ制限に近づいた場合に、通知をトリガーすることができます。
自動スケーリング課金を有効にした後は、Spark のワークロードがファブリック容量を必要としなくなった分、その容量を縮小できます。
Fabric における Spark ワークロードをうまくコントロールするための一助になれば幸いです。