mcpField
S
spark-operations-cli

spark-operations-cli

github.com/microsoftデータ・データベース1.3k104 回インストール3 週間前に更新
リポジトリ

spark-operations-cli について

Microsoft Fabric の Spark ジョブ、Livy セッション、性能問題を診断する読み取り専用のコマンドラインスキルです。監視 API、Spark Advisor、ログ、リソース指標を使って調査し、セッションのクリーンアップには明示的な確認を求めます。

主な機能

  1. 01Spark ジョブ失敗の診断
  2. 02Livy セッションの健全性確認
  3. 03Spark Advisor による分析
  4. 04Driver と Executor のログ取得
  5. 05性能とリソースの分析
  6. 06読み取り専用の診断ワークフロー

活用シーン

  1. 01失敗した Spark ジョブを調査
  2. 02アイドル状態または異常な Livy セッションを検出
  3. 03ジョブ実行履歴を比較して回帰を特定
  4. 04リソース使用量と性能ボトルネックを評価

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/microsoft/skills-for-fabric --skill spark-operations-cli

インストール後、Claude Code で/spark-operations-cliを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
automated-diagnostic-workflow.md
diagnostic-workflow.md
job-diagnostics.md
jobinsight-api.md
performance-patterns.md
pipeline-diagnosis.md
session-health.md
spark-history-server.md

詳細

テレメトリ — 必須。 すべての api.fabric.microsoft.com 呼び出しには、 x-ms-fabric-skill: spark-operations-cli を付与する必要があります(az rest の場合:--headers "x-ms-fabric-skill=spark-operations-cli")。 すべての LRO ポーリング、fabric_lro、およびリトライも対象です。スニペットでは省略されていますが、必ず追加してください。

更新の確認 — セッションごとに 1 回(必須) セッション中にこのスキルを初めて使用するときは、先に check-updates スキルを実行してください。

  • GitHub Copilot CLI / VS Code:check-updates スキルを呼び出します。
  • Claude Code / Cowork / Cursor / Windsurf / Codex:ローカルとリモートの package.json のバージョンを比較します。
  • このセッション中にすでに確認済みの場合は、スキップしてください。

重要な注意事項

  1. ワークスペース名からワークスペースの詳細(ID を含む)を確認するには、まずすべてのワークスペースを一覧表示し、その後 JMESPath フィルタリングを使用してください。
  2. ワークスペース ID、アイテムの種類、アイテム名からアイテムの詳細(ID を含む)を確認するには、まずそのワークスペース内の該当する種類のアイテムをすべて一覧表示し、その後 JMESPath フィルタリングを使用してください。
  3. スキルの使い分け:spark-operations-cli は、既存のジョブとセッションの読み取り専用のトリアージと診断に使用します。ノートブックの作成、新しいジョブの実行、または Spark の開発には、spark-authoring-cli を使用してください。対話型 PySpark 分析と Livy セッションの作成には、spark-consumption-cli を使用してください。

Spark Operations — CLI スキル

このスキルでは、Fabric REST API と CLI ツール(az rest)を使用して、Microsoft Fabric の Spark ジョブの失敗、Livy セッションの状態、パフォーマンスのボトルネックを診断できます。診断操作はすべて読み取り専用です。セッションのクリーンアップ(ゾンビセッションの停止など)には、ユーザーによる明示的な確認が必要です。Spark の開発とノートブックの作成には、spark-authoring-cli を使用してください。対話型 PySpark 分析には、spark-consumption-cli を使用してください。

目次

目次は目的別にまとめられています。進行中の障害をトリアージする場合は、診断ワークフローから始めてください。それより前のセクションは基本事項を参照するためのものです。

1. Fabric の基礎(概念)
タスクリファレンス備考
Fabric のトポロジと主要概念COMMON-CORE.md § Fabric のトポロジと主要概念
環境 URLCOMMON-CORE.md § 環境 URL
認証とトークンの取得COMMON-CORE.md § 認証とトークンの取得オーディエンスが正しくないと 401 が発生します。認証に関する問題がある場合は、先にお読みください
コアのコントロールプレーン REST APICOMMON-CORE.md § コアのコントロールプレーン REST API
ページネーションCOMMON-CORE.md § ページネーション
長時間実行操作(LRO)COMMON-CORE.md § 長時間実行操作(LRO)
レート制限とスロットリングCOMMON-CORE.md § レート制限とスロットリング
ジョブの実行COMMON-CORE.md § ジョブの実行
キャパシティ管理COMMON-CORE.md § キャパシティ管理
注意点とトラブルシューティングCOMMON-CORE.md § 注意点とトラブルシューティング
ベストプラクティスCOMMON-CORE.md § ベストプラクティス
2. CLI のセットアップと認証
タスク参照先備考
ツール選定の根拠COMMON-CLI.md § ツール選定の根拠
Fabric でのワークスペースとアイテムの検索COMMON-CLI.md § Fabric でのワークスペースとアイテムの検索必須 — 最初にリンクを読むこと [名前からワークスペース ID、または名前、アイテムの種類、ワークスペース ID からアイテム ID を検索するために必要]
認証の手順COMMON-CLI.md § 認証の手順az login のフローとトークンの取得
az rest による Fabric コントロールプレーン APICOMMON-CLI.md § az rest による Fabric コントロールプレーン API必ず --resource https://api.fabric.microsoft.com を渡してください。渡さないと az rest は失敗します
ページネーションのパターンCOMMON-CLI.md § ページネーションのパターン
長時間実行操作(LRO)のパターンCOMMON-CLI.md § 長時間実行操作(LRO)のパターン
注意点とトラブルシューティング(CLI 固有)COMMON-CLI.md § 注意点とトラブルシューティング(CLI 固有)az rest のオーディエンス、シェルのエスケープ、トークンの有効期限切れ
クイックリファレンス:az rest テンプレートCOMMON-CLI.md § クイックリファレンス:az rest テンプレート
クイックリファレンス:トークンのオーディエンス/CLI ツールの対応表COMMON-CLI.md § クイックリファレンス:トークンのオーディエンス ↔ CLI ツールの対応表各サービスで使用する --resource とツール
3. Spark セッション、ノートブック、ジョブ(背景知識)
タスク参照先備考
Livy セッション管理SPARK-CONSUMPTION-CORE.md § Livy セッション管理セッションの作成、状態、ライフサイクル、終了
対話型データ探索SPARK-CONSUMPTION-CORE.md § 対話型データ探索ステートメントの実行、出力の取得、データの探索
ノートブックの実行とジョブ管理SPARK-AUTHORING-CORE.md § ノートブックの実行とジョブ管理
4. Spark Monitoring API(主要なトリアージサーフェス)
タスク参照備考
Spark Monitoring API の概要SPARK-MONITORING-CORE.md § OverviewGA 監視 API — アクティブなセッションは不要です
ワークスペースとアイテムのセッション一覧SPARK-MONITORING-CORE.md § Workspace and Item-Level Session Listingフィルターを使って、ワークスペース全体の Spark アプリを一覧表示します
Spark Advisor APISPARK-MONITORING-CORE.md § Spark Advisor API重要 — スキューの自動検出、タスクエラー、推奨事項
オープンソースの Spark History Server APISPARK-MONITORING-CORE.md § Open-Source Spark History Server APIsREST 経由でジョブ、ステージ、エグゼキューター、SQL クエリを取得します
ドライバーおよびエグゼキューターのログ APISPARK-MONITORING-CORE.md § Driver and Executor Log APIsアクティブなセッションなしでログを直接取得します
Livy Log APISPARK-MONITORING-CORE.md § Livy Log APIバイトオフセットによるページネーションに対応したセッションレベルのログ
リソース使用量 APISPARK-MONITORING-CORE.md § Resource Usage APIvCore のタイムライン、アイドル/実行中のコア、効率性の指標
監視 API を使った診断ワークフローSPARK-MONITORING-CORE.md § Diagnostic Workflow Using Monitoring APIs監視 API を使ったステップごとのトリアージ
5. 診断ワークフロー(アクティブなトリアージはここから開始)
タスク参照備考
自動診断ワークフロー(全体)automated-diagnostic-workflow.mdステップ 1~7:特定 → 状態別に振り分け → 障害/パフォーマンス/リソース/健全性 → レポート。ステップ 1b の期限切れデータのフォールバックとレポートテンプレートを含みます
診断レベルdiagnostic-workflow.md § Diagnostic Tiersレベル 1(オンライン REST)対レベル 2(ローカル SHS)
主な診断パターンdiagnostic-workflow.md § Key Diagnostic Patterns症状 → 最初の確認項目 → 考えられる原因を検索
重大度のしきい値diagnostic-workflow.md § Severity Thresholds検出結果の分類に使うメトリックのしきい値
手動 CLI レシピdiagnostic-workflow.md § Manual CLI Recipes手動で使うアドホックな診断コマンド
パイプライン実行の診断pipeline-diagnosis.mdパイプライン実行内のすべての Spark アクティビティを診断します(ステップ P1~P6)
6. ジョブ障害の診断
タスク参照備考
障害トリアージワークフローjob-diagnostics.md § Failure Triage Workflow障害を診断するためのステップごとの決定木
ジョブ障害の分類job-diagnostics.md § Failure ClassificationOOM、シャッフル、タイムアウト、依存関係、構成のエラー
REST 経由での Spark ログの読み取りjob-diagnostics.md § Reading Spark Logs via RESTLivy からドライバー/エグゼキューターのログを取得します
ジョブインスタンスの履歴job-diagnostics.md § Job Instance History最近の実行をクエリし、実行時間を比較して、リグレッションを検出します
7. Livy セッションの健全性
タスク参照先備考
セッションの健全性評価session-health.md § Livy セッションのライフサイクルセッションの状態、遷移、想定所要時間
アイドルセッションとゾンビセッションの検出session-health.md § アイドルセッションとゾンビセッションの検出リークしたセッションを検出してクリーンアップします
セッションリソースの監視session-health.md § セッションリソースの監視Livy 経由でメモリとエグゼキューターの使用状況を確認します
セッションの復旧パターンsession-health.md § セッションの復旧パターン再起動戦略とセッションの置き換え
8. パフォーマンス診断
タスク参照先備考
パフォーマンスのアンチパターンperformance-patterns.md § アンチパターンスピル、シャッフル、データの偏り、小さなファイル、collect の誤用
ステージとタスクの分析performance-patterns.md § ステージとタスクの分析REST 経由で Spark UI のメトリクスを読み取ります
最適化のレシピperformance-patterns.md § 最適化のレシピパーティションの調整、ブロードキャスト結合、キャッシュ
容量とリソースの診断performance-patterns.md § 容量とリソースの診断CU の消費量、スロットリングの検出
9. オフライン/詳細分析ツール
タスク参照先備考
JobInsight のイベントログコピーjobinsight-api.md § LogUtils.copyEventLogオフライン分析のために、イベントログを Fabric から OneLake にコピーします
ローカル Spark History Serverspark-history-server.md § 概要Spark UI 全体(DAG、タスク、SQL プラン)を確認できるよう、ローカル SHS を起動します

必須/推奨/回避

必ず行うこと
  • 修復を試みる前に、必ずジョブ/セッションの状態を取得してください
  • COMMON-CLI.md のワークスペースとアイテムの検出方法を使用してください。ID をハードコードしないでください
  • 診断ステートメントを送信する前に、Livy セッションの状態を確認してください
  • 体系的な診断には、障害トリアージのワークフローに従ってください
  • 生ログを読む前に、必ず Spark Advisor API を確認してください。多くの場合、根本原因をすぐに特定できます
  • Livy ベースの診断を試みる前に、監視 API(アクティブなセッションは不要)を使用してください
  • ジョブ/セッションの状態は 10~30 秒間隔でポーリングし、診断は 30 分後にタイムアウトしてください
  • 診断出力には必ず Notebook Snapshot の URL を含めてください。保持期間が最も長く、Fabric UI でセル単位の調査が可能になります
優先事項
  • リグレッションと判断する前に、ジョブインスタンスの履歴を照会してベースラインを確立する

  • 診断クエリでは新しいセッションを作成せず、既存のアイドル状態のセッションを再利用する

  • ジョブの遅延を Spark コードのせいにする前に、容量の使用率を確認する

  • 大規模な API レスポンスから特定のフィールドを抽出するには、JMESPath フィルタリングを使って az rest を使用する

  • スキュー、タスクエラー、タイムアウトの検出には、手動でログを解析するより Spark Advisor API を使用する

  • スケーリングを推奨する前に、Resource Usage API の coreEfficiency メトリックを使ってクラスターの使用率を定量化する

  • 詳細な調査に入る前に、ジョブインスタンス履歴(直近5回の実行)を比較してリグレッションを検出する

  • MLV の更新スケジュール、監視、実行履歴には、mlv-operations-cli を使用してください。根本原因となっている Spark ジョブの失敗(OOM、スキュー、シャッフルのスピル)の診断には、引き続きこのスキルを使用してください。MLV の更新は Spark ジョブとして実行され、ログには同じ監視 API からアクセスできます。

  • MLV 失敗の分類 — 失敗した MLV の更新を診断する際は、詳細な調査に入る前にエラーを分類します。

    エラーパターンカテゴリ診断手順
    MLV_SPARK_SESSION_REQUEST_SUBMISSION_FAILEDインフラストラクチャ容量が一時停止中または利用不可、Spark プールの設定ミスが考えられます。まず容量の状態を確認します。
    MLV_SELECTED_NOT_FOUND設定MLV テーブルが削除または名前変更されています。SHOW MATERIALIZED LAKE VIEWS IN schema を実行して、テーブルが存在することを確認します。
    OutOfMemoryError / SparkOutOfMemoryリソースソースデータがクラスターの容量を超えるほど増加しています。Spark Advisor でメモリ負荷を確認します。
    ShuffleBlockFetchFailed / data skewパフォーマンスデータの分布が不均一です。Resource Usage API を使用して、スキューが発生しているパーティションを特定します。
    DeltaTableVersionNotFound依存関係ソーステーブルが保持期間のしきい値を下回るまで vacuum されています。delta.logRetentionDuration を延長します。
    ConstraintViolationException / ON MISMATCHデータ品質DQ 制約によって行が削除されたか、処理に失敗しました。上流のソースデータの品質を確認します。
    タイムアウト(実行時間が24時間超)スケールリネージが大きすぎて1回の実行で処理できません。複数のレイクハウスに分けて、リネージグループを小さくします。
避けるべきこと
  • アクティブなステートメントがあるか確認せずにセッションを終了する
  • 診断クエリごとに新しいセッションを作成する(アイドル状態のセッションを再利用してください)
  • Livy の実際のメモリメトリックを確認せずに OOM と決めつける
  • 診断スクリプトでワークスペース ID やアイテム ID をハードコードする
  • Admin API で容量のスロットリングを最初に確認せずにパフォーマンスを診断する
  • busy 状態のセッションに診断ステートメントを送信する

例

例 1:失敗したノートブックを診断する

ユーザープロンプト:「ワークスペース Production のノートブック ETL_Daily が失敗したのはなぜですか?」

エージェントのワークフロー:

  1. ワークスペースを workspaceId に、アイテムを itemId(Notebook)に解決します
  2. 最近の Livy セッションを一覧表示し、Failed セッションを自動選択します
  3. Spark Advisor に問い合わせ、エグゼキューターで TaskError: OutOfMemoryError を検出します
  4. /stages に問い合わせ、ステージ5でデータスキュー(最大値と中央値の比が12倍)を確認します
  5. 重大度が HIGH の検出結果と修正の推奨事項を含むレポートを提示します
例 2:停止した Livy セッションをトリアージする

ユーザープロンプト:「Livy セッション abc-1234 が starting 状態のまま停止しています」

エージェントのワークフロー:

  1. セッション ID を直接使って、セッションの状態を照会します
  2. ワークスペース内のすべてのセッションを一覧表示し、同時実行中のセッションが8つあること(容量の逼迫)を検出します
  3. Livy ログを確認します。エラーはなく、キューに入っているだけです
  4. 容量の競合を報告し、待機するかアイドル状態のセッションをキャンセルするよう推奨します
例 3:パイプライン失敗の根本原因

ユーザープロンプト:「ワークスペース Analytics のパイプライン実行 5678 を診断してください」

エージェントのワークフロー:

  1. パイプラインを特定し、実行 5678 に対して queryActivityRuns を呼び出します
  2. Notebook アクティビティを2つ検出します。一方は Succeeded、もう一方は Failed です
  3. 失敗したアクティビティから output.result.error.{ename, evalue, traceback} を抽出します
  4. セル単位で調査できる Notebook Snapshot URL を生成します
  5. エラーの詳細、スナップショットへのリンク、推奨される修正方法を提示します

クイックスタート

環境設定

COMMON-CLI.md の環境検出を適用して、次を設定します。

  • $FABRIC_API_BASE と $FABRIC_RESOURCE_SCOPE
  • Livy の操作では $FABRIC_API_URL と $LIVY_API_PATH

認証:COMMON-CLI.md § Authentication Recipes に記載されているトークン取得方法を使用します。


自動診断ワークフロー

ユーザーが簡単なプロンプト(例:「ノートブック ETL_Pipeline を診断して」、「Spark アプリケーション abc-123 の問題を教えて」、「ワークスペース Production に問題がないか確認して」)を入力したら、このファストパスの概要に従います。詳しい手順、エッジケース(期限切れデータ、パイプラインのみのセッション)、レポートのテンプレート、保持に関する詳細は、references/automated-diagnostic-workflow.md を参照してください。

エントリーポイント(ユーザーが指定する情報)
ユーザーが指定する情報エージェントが解決する情報
ワークスペース名→ workspaceId(ワークスペース一覧と名前フィルターを使用)
ノートブック/SJD/レイクハウス名→ itemId(アイテム一覧と名前/種類フィルターを使用)
パイプライン名+実行 ID→ 子 Spark アクティビティ → pipeline-diagnosis.md を参照
Livy セッション ID または Spark アプリ ID→ そのまま使用
具体的な情報がない場合→ ワークスペース名+アイテム名を尋ねます
アイテムタイプごとの API パス
アイテムタイプLivy セッションのパスジョブインスタンスのパス
ノートブック/notebooks/{id}/livySessions/items/{id}/jobs/instances
Spark ジョブ定義/sparkJobDefinitions/{id}/livySessions/items/{id}/jobs/instances
レイクハウス/lakehouses/{id}/livySessions/lakehouses/{id}/jobs/instances

すべてのセッション API パスは次の形式に従います:$FABRIC_API_URL/workspaces/$workspaceId/<itemTypePath>/$itemId/livySessions/$livyId/applications/$appId/<endpoint>。SPARK-MONITORING-CORE.md を参照してください。

手順の概要
手順タイミングアクション自動フラグのルール
1. 解決と検出常にワークスペース → アイテムを解決し、最近の Livy セッションを一覧表示します。曖昧さがなければ自動で選択し、それ以外の場合はユーザーに確認します—
1b. フォールバックセッションが 404 / Spark Monitoring データの期限切れqueryActivityRuns(パイプライン)→ Job Instance の failureReason を試し、Notebook Snapshot の URL を構築しますリファレンス § 手順 1b を参照
2. 状態に応じた分岐手順 1 の後Failed → 3+4+5 · Succeeded/InProgress → 4+5 · Cancelled → ログ+3 · idle/busy/starting → 6 · dead/killed/error → 3+6—
3. 失敗の分析Failed / Cancelled / dead次の順にクエリします:Spark Advisor → ドライバーの stderr → Job Instance → エグゼキューターのログ → Livy のログ → リソース使用量。根本原因が明らかになった時点で停止します。job-diagnostics.md § クイックリファレンステーブル と照合
4. パフォーマンス常に(手順 1b の経路を除く)/stages、/allexecutorsskew max/median > 3× · spill diskBytesSpilled > 0 · GC jvmGcTime/executorRunTime > 20% · shuffle > 1 GB · tasks < 100ms
5. リソース使用率常に(手順 1b の経路を除く)/resourceUsagecoreEfficiency < 0.3 → HIGH · idleTime/duration > 0.4 → MEDIUM
6. セッションの健全性アイドル/ゾンビの確認GET /workspaces/$workspaceId/spark/livySessionsidle かつ最近のステートメントがない → ゾンビ · starting が想定時間を超過 → 容量の問題
7. レポートの作成最後重要度順の検出結果テーブル + Notebook Snapshot リンク + 修正案テンプレートについてはリファレンス § 手順 7を参照

重要な原則:常に最初に Spark Advisor を確認してください。事前に計算済みのため、ログを解析しなくてもほとんどの根本原因を特定できます。パイプラインの実行では、queryActivityRuns(ename、evalue、traceback、セル/行)から最も詳細なエラーデータを取得できます。pipeline-diagnosis.mdを参照してください。

データ保持に関する警告:Spark Monitoring API のデータ(ログ、ステージ、Advisor)は通常、セッション終了後 数分から数時間 で期限切れになります。失敗は速やかに診断してください。API が 404 を返した場合は、リファレンスの手順 1b に進んでください。

Tier 2 へのエスカレーション:データの切り捨て、HTTP 408/504、または DAG/SQL プランの可視化が必要な場合は、オフライン Spark History Server ワークフローを提案してください。

コメント