mcpField
D
databricks-execution-compute

databricks-execution-compute

github.com/databricksクラウド・DevOps373303 回インストール今日更新
リポジトリ

databricks-execution-compute について

Databricks でコードを実行し、コンピュート方式を選ぶための運用ガイドです。Databricks Connect、サーバーレスジョブ、インタラクティブクラスターを扱い、Spark 処理や長時間タスク、状態を保つ実行向けの CLI 手順を説明します。

主な機能

  1. 013種類のコード実行方式を比較
  2. 02Databricks Connect で Spark を実行
  3. 03サーバーレスジョブの送信と確認
  4. 04インタラクティブクラスターの管理
  5. 05SQL ウェアハウスの管理

活用シーン

  1. 01ローカルで作成した PySpark コードを実行
  2. 02長時間の処理タスクを送信
  3. 03複数回の呼び出しで実行状態を保持
  4. 04SQL ウェアハウスを作成または管理

インストール

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

$npx skills add https://github.com/databricks/databricks-agent-skills --skill databricks-execution-compute

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

同梱ファイル

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

agents/
openai.yaml
assets/
databricks.svg
references/
1-databricks-connect.md
2-serverless-job.md
3-interactive-cluster.md

詳細

Databricks の実行とコンピュート

Databricks でコードを実行します。実行モードは 3 種類あります。ワークロードに合わせて選択してください。以下の例はすべて Databricks CLI を使用します。インストールと認証については、databricks-core スキルを参照してください。

実行モードの判断マトリクス

観点Databricks Connect ⭐サーバーレスジョブインタラクティブクラスター
用途Spark コード(ETL、データ生成)大規模な処理(ML)ツール呼び出し間で状態を保持する場合、Scala/R
起動時間即時コールドスタートで約 25~50 秒停止中の場合、約 5 分
状態Python プロセス内なしcontext_id 経由
言語Python(PySpark)Python、SQLPython、Scala、SQL、R
依存関係withDependencies()環境仕様を指定した CLIクラスターにインストール
判断フロー

主な判断ポイント:Declarative Automation Bundles(DAB)を使用している場合は、まず databricks-dabs スキルの手順に従ってください。簡単に言うと、databricks bundle run を使用して、ジョブ、パイプライン、その他のリソースに関連付けられたコードを実行できます。プロジェクトのルートにある databricks.yml ファイルで、これらのリソースの有無を確認できます。これらのリソースが存在しない場合、または DAB を使用していない場合は、以下に進んでください。

すべての Spark ベースのワークロードでは Databricks Connect を優先し、次にサーバーレスを使用してください。

Spark-based code? → Databricks Connect (fastest)
  └─ Python 3.12 missing? → Install it + databricks-connect
  └─ Install fails? → Ask user (don't auto-switch modes)

Heavy/long-running (ML)? → Serverless Job (independent)
Need state across calls? → Interactive Cluster (list and ask which one to use)
Scala/R? → Interactive Cluster (list and ask which one to use)

コードの実行方法

先に、選択したモードのリファレンスファイルを読んでください。

Databricks Connect(ローカルで実行。純粋な Spark コードの場合に推奨)→ リファレンス
from databricks.connect import DatabricksSession
...
spark = DatabricksSession.builder.profile("my-local-profile").serverless(True).getOrCreate()


python my_spark_script.py
サーバーレスジョブ → リファレンス

純粋な CLI の手順:ローカルファイルをワークスペースのノートブックとしてアップロードし、databricks jobs submit で 1 回限りの実行を開始します(作成と実行を 1 回の呼び出しで行います。エフェメラルであり、Jobs UI にエントリーは作成されず、再試行もありません)。その後、ポーリングして結果を取得します。ローカルファイルは Databricks ソースノートブックである必要があります。先頭行は # Databricks notebook source(Python)または -- Databricks notebook source(SQL)です。

1. ローカルファイルをワークスペースのノートブックとしてアップロードします。 TARGET_PATH は位置引数です。--file はローカルパスです。

databricks workspace import /Workspace/Users/<user>/.ai_dev_kit/train --file /local/path/to/train.py --format SOURCE --language PYTHON --overwrite

2. 実行を送信します。 --no-wait を指定すると、すぐに {"run_id": N} が返されます。指定しない場合は、実行が終了するまで待機します。依存関係をインストールするには "client": "4" が必要です("1" では依存関係が黙って無視されます)。

databricks jobs submit --no-wait --json @submit.json

{
  "run_name": "train-run",
  "tasks": [{
    "task_key": "main",
    "notebook_task": {"notebook_path": "/Workspace/Users/<user>/.ai_dev_kit/train"},
    "environment_key": "ml_env"
  }],
  "environments": [{
    "environment_key": "ml_env",
    "spec": {"client": "4", "dependencies": ["scikit-learn==1.5.2", "mlflow==2.22.0"]}
  }]
}

3. 状態を確認し、完了を待ちます。 ライフサイクル:PENDING → RUNNING → TERMINATED(または SKIPPED / INTERNAL_ERROR)。ライフサイクルが TERMINATED になってから、.state.result_state(SUCCESS / FAILED / CANCELED)を読み取ってください。

databricks jobs get-run <RUN_ID> | jq '{state: .state.life_cycle_state, result: .state.result_state, duration_ms: .execution_duration, url: .run_page_url, task_run_id: .tasks[0].run_id}'

4. 出力またはエラーを取得します。 注意点: get-run-output が受け取るのはタスクの run_id(.tasks[0].run_id)であり、submit から返される親の run_id ではありません。notebook_output.result は dbutils.notebook.exit() に渡された文字列です。

databricks jobs get-run-output <TASK_RUN_ID> | jq '{result: .notebook_output.result, error, error_trace}'

ノートブックでは必ず dbutils.notebook.exit(<string>) を使用してください。print() の出力は get-run-output では取得されません。JSON の結果を返す場合は、dbutils.notebook.exit(json.dumps({...})) を使用し、クライアント側で .notebook_output.result を解析してください。

インタラクティブクラスター → リファレンス

デフォルトでは使用しないでください。Serverless Job を優先してください。 インタラクティブクラスターを使用するのは、次の場合に限ります。

  • すでに稼働中の既存のクラシッククラスターを利用できる場合、または
  • 複数回の呼び出しにわたる、ライブで状態を保持する実行が必要な場合(実行コンテキストを使ったデバッグなど)、または
  • ユーザーから明示的に要求された場合

インタラクティブクラスターは起動が遅く(3-8 min)、稼働中は費用が発生します。暗黙的に起動しないでください。

CLI コマンド一覧

コンピュートのライフサイクル管理とコード実行の操作は、すべて Databricks CLI を通じて行います。主なコマンドは次のとおりです。

操作コマンド
ローカルファイルをワークスペースノートブックとしてアップロードdatabricks workspace import <WORKSPACE_PATH> --file <LOCAL> --format SOURCE --language PYTHON --overwrite
サーバーレスコードを実行(アップロード+送信+待機)databricks jobs submit --json @submit.json(上記の Serverless Job セクションを参照。非同期実行には --no-wait を指定)
実行状態の取得/待機databricks jobs get-run <RUN_ID>(.state.life_cycle_state をポーリング)
実行出力の取得databricks jobs get-run-output <TASK_RUN_ID>
クラスターの一覧表示databricks clusters list --output json
クラスターの詳細取得databricks clusters get <CLUSTER_ID>
クラスターの起動/再起動/終了databricks clusters start/restart/delete <CLUSTER_ID>
クラスターの完全削除databricks clusters permanent-delete <CLUSTER_ID>
クラスターの作成databricks clusters create --json '{...}'(3-interactive-cluster.md を参照)
ノードタイプ/Spark バージョンの一覧表示databricks clusters list-node-types / databricks clusters spark-versions
稼働中のクラスターでコードを実行databricks api post /api/1.2/contexts/create + databricks api post /api/1.2/commands/execute(3-interactive-cluster.md を参照)
SQL ウェアハウスdatabricks warehouses create/list/get/start/stop/edit/delete(下記の SQL ウェアハウスを参照)
SQL ウェアハウス

ID を受け取るコマンドはすべて位置引数を使用します(--id フラグはありません)。ID を確認するには databricks warehouses list を使用してください。

# Create a serverless SQL warehouse. min_num_clusters + max_num_clusters are REQUIRED
# (the server rejects the default 0). Keep the aidevkit_project tag for resource tracking.
databricks warehouses create --json '{
  "name": "my-warehouse",
  "cluster_size": "Small",
  "enable_serverless_compute": true,
  "auto_stop_mins": 10,
  "min_num_clusters": 1,
  "max_num_clusters": 1,
  "tags": {"custom_tags": [{"key": "aidevkit_project", "value": "ai-dev-kit"}]}
}'

# List / find — trim to id, name, state with jq
databricks warehouses list -o json | jq '.[] | {id, name, state, size: .cluster_size}'

# Find by name
databricks warehouses list -o json | jq '.[] | select(.name == "my-warehouse")'

# Get one warehouse's full config
databricks warehouses get <WAREHOUSE_ID>

# Start / stop (both are LROs; add --no-wait to return immediately)
databricks warehouses start <WAREHOUSE_ID>
databricks warehouses stop  <WAREHOUSE_ID>

# Resize / reconfigure — pass the FULL desired config (omitted fields revert to defaults,
# so always re-state min_num_clusters/max_num_clusters). Use --no-wait if the warehouse
# is STOPPED, otherwise edit blocks trying to reach RUNNING and errors out (the mutation
# itself still applies). When the warehouse is already RUNNING, --no-wait is optional.
databricks warehouses edit <WAREHOUSE_ID> --no-wait --json '{
  "name": "my-warehouse",
  "cluster_size": "Medium",
  "enable_serverless_compute": true,
  "auto_stop_mins": 15,
  "min_num_clusters": 1,
  "max_num_clusters": 1
}'

# Delete (irreversible)
databricks warehouses delete <WAREHOUSE_ID>

サイズ: 2X-Small、X-Small、Small、Medium、Large、X-Large、2X-Large、3X-Large、4X-Large。タイプ: JSON 本文で "warehouse_type": "PRO"(デフォルト)または "CLASSIC" を設定します。

関連スキル

コメント