🔧databricks-execution-compute
- プラグイン
- databricks
- ソース
- GitHub で見る ↗
説明
Databricks上でコードを実行し、コンピューティングリソースを管理します: サーバーレス、クラシック、またはインタラクティブクラスターを通じてPython / Scala / SQL / Rを実行し、クラスターおよびSQLウェアハウスの作成・サイズ変更・削除を行います。
原文を表示
Execute code and manage compute on Databricks: run Python/Scala/SQL/R via serverless, classic, or interactive clusters, and create/resize/delete clusters and SQL warehouses.
ユースケース
- ✓Databricks上でコードを実行するとき
- ✓コンピューティングリソースを管理するとき
- ✓クラスターを作成・サイズ変更・削除するとき
- ✓SQLウェアハウスを作成・管理するとき
- ✓Python/Scala/SQL/Rを実行するとき
本文(日本語訳)
Databricks 実行 & コンピュート
Databricks 上でコードを実行します。実行モードは3種類から選択してください。
以下の例はすべて Databricks CLI を使用します。インストールと認証については databricks-core スキルを参照してください。
実行モード 選択マトリクス
| 観点 | Databricks Connect ⭐ | Serverless Job | Interactive Cluster |
|---|---|---|---|
| 用途 | Spark コード(ETL、データ生成) | 重い処理(ML) | ツール呼び出しをまたぐ状態保持、Scala/R |
| 起動 | 即時 | コールドスタート 約25〜50秒 | 停止中の場合 約5分 |
| 状態 | Python プロセス内 | なし | context_id 経由 |
| 言語 | Python(PySpark) | Python、SQL | Python、Scala、SQL、R |
| 依存関係 | withDependencies() |
environments spec を付けた CLI | クラスターへのインストール |
選択フロー
主な判断ポイント:
Declarative Automation Bundles(DABs)を使用している場合は、まず databricks-dabs スキル の手順に従ってください。
簡単に言うと、databricks bundle run を使って、ジョブ・パイプライン・その他のリソースに紐付いたコードを実行できます。
プロジェクトルートに databricks.yml ファイルがあれば DABs を使用していると判断できます。
これらのリソースが存在しない場合、または DABs を使用していない場合は、以下の手順に進んでください。
Spark ベースのワークロードには Databricks Connect を優先し、次に Serverless を検討してください。
Spark ベースのコード? → Databricks Connect(最速)
└─ Python 3.12 が未インストール? → Python と databricks-connect をインストール
└─ インストール失敗? → ユーザーに確認(自動でモードを切り替えない)
重い処理・長時間実行(ML)? → Serverless Job(独立実行)
呼び出しをまたいで状態を保持したい? → Interactive Cluster(一覧を表示してどれを使うか確認)
Scala / R を使用? → Interactive Cluster(一覧を表示してどれを使うか確認)
コードの実行方法
選択したモードのリファレンスファイルを先に読んでから進めてください。
Databricks Connect(ローカル実行。純粋な Spark コードの場合に優先)→ リファレンス
from databricks.connect import DatabricksSession
...
spark = DatabricksSession.builder.profile("my-local-profile").serverless(True).getOrCreate()
python my_spark_script.py
Serverless Job → リファレンス
純粋な 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" では dependencies が指定されていても警告なしに無視されます)。
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)。
.state.result_state(SUCCESS / FAILED / CANCELED)はライフサイクルが TERMINATED になってから読んでください。
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)であり、サブミット時の親 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(<文字列>) を使用してください。
print() の出力は get-run-output では取得できません。
JSON 結果を返す場合:dbutils.notebook.exit(json.dumps({...})) とし、クライアント側で .notebook_output.result をパースします。
Interactive Cluster → リファレンス
デフォルトでは使用しないこと。Serverless Job を優先してください。
次のような場合に使用:
- 既存のクラシッククラスターがすでに起動・利用可能な場合
- 複数の呼び出しをまたいでライブかつステートフルな実行が必要な場合(実行コンテキスト経由のデバッグなど)
- ユーザーが明示的に要求した場合
Interactive Cluster は起動が遅く(3〜8分)、起動中はコストが発生します。 暗黙的に起動しないでください。
CLI コマンドマップ
コンピュートのライフサイクルおよびコード実行に関する操作は、すべて Databricks CLI を通じて行います。
| アクション | コマンド |
|---|---|
| ローカルファイルをワークスペースノートブックとしてアップロード | databricks workspace import <WORKSPACE_PATH> --file <LOCAL> --format SOURCE --language PYTHON --overwrite |
| Serverless コードの実行(アップロード+サブミット+待機) | databricks jobs submit --json @submit.json(非同期の場合は --no-wait を付加。Serverless Job セクション参照) |
| 実行状態の取得・待機 | 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 を使用してください。
# サーバーレス SQL ウェアハウスの作成
# min_num_clusters と max_num_clusters は必須(デフォルト値 0 はサーバーに拒否されます)
# リソース追跡のため aidevkit_project タグを付けてください
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"}]}
}'
# 一覧取得 — jq で id、name、state に絞り込む
databricks warehouses list -o json | jq '.[] | {id, name, state, size: .cluster_size}'
# 名前で検索
databricks warehouses list -o json | jq '.[] | select(.name == "my-warehouse")'
# 特定ウェアハウスの完全な設定を取得
databricks warehouses get <WAREHOUSE_ID>
# 起動 / 停止(いずれも LRO。即時返却する場合は --no-wait を付加)
databricks warehouses start <WAREHOUSE_ID>
databricks warehouses stop <WAREHOUSE_ID>
# リサイズ / 再設定 — 必ず完全な設定を渡すこと
#(省略したフィールドはデフォルト値に戻るため、min_num_clusters / max_num_clusters は常に明示する)
# ウェアハウスが STOPPED 状態の場合は --no-wait を付けること。
# 付けないと RUNNING になるまでブロックしてエラーになります(変更自体は適用されます)。
# ウェアハウスがすでに RUNNING の場合、--no-wait は任意です。
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
}'
# 削除(取り消し不可)
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" を指定します。
関連スキル
- databricks-synthetic-data-gen — Spark + Faker を使ったデータ生成
- databricks-jobs — プロダクション向けジョブオーケストレーション
- databricks-dbsql — SQL ウェアハウスと AI 関数
原文(English)を表示
Databricks Execution & Compute
Run code on Databricks. Three execution modes—choose based on workload. All examples below use the Databricks CLI; see the databricks-core skill for install and authentication.
Execution Mode Decision Matrix
| Aspect | Databricks Connect ⭐ | Serverless Job | Interactive Cluster |
|---|---|---|---|
| Use for | Spark code (ETL, data gen) | Heavy processing (ML) | State across tool calls, Scala/R |
| Startup | Instant | ~25-50s cold start | ~5min if stopped |
| State | Within Python process | None | Via context_id |
| Languages | Python (PySpark) | Python, SQL | Python, Scala, SQL, R |
| Dependencies | withDependencies() |
CLI with environments spec | Install on cluster |
Decision Flow
Main decision point: if you're using Declarative Automation Bundles (DABs) then follow the instructions of the databricks-dabs skill first. In short, you can use databricks bundle run to run code associated with jobs, pipelines, and other resources. This can be recognized by looking for a databricks.yml file in the project root. If these resources don't exist, or if you're not using DABs, then proceed with the below.
Prefer Databricks Connect for all spark-based workload, then serverless.
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)
How to Run Code
Read the reference file for your chosen mode before proceeding.
Databricks Connect (run locally, prefer when it's pure spark code) → reference
from databricks.connect import DatabricksSession
...
spark = DatabricksSession.builder.profile("my-local-profile").serverless(True).getOrCreate()
python my_spark_script.py
Serverless Job → reference
Pure CLI flow: upload a local file as a workspace notebook, fire a one-time run with databricks jobs submit (create + run in one call, ephemeral — no Jobs UI entry, no retry), then poll + fetch the result. The local file must be a Databricks source notebook — top line # Databricks notebook source (Python) or -- Databricks notebook source (SQL).
1. Upload the local file as a workspace notebook. TARGET_PATH is positional; --file is the local path.
databricks workspace import /Workspace/Users/<user>/.ai_dev_kit/train --file /local/path/to/train.py --format SOURCE --language PYTHON --overwrite
2. Submit the run. Use --no-wait to get {"run_id": N} back immediately; drop it to block until terminated. "client": "4" is required for dependencies to install ("1" silently ignores them).
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. Check state / wait for completion. Life-cycle: PENDING → RUNNING → TERMINATED (or SKIPPED / INTERNAL_ERROR). Only read .state.result_state (SUCCESS / FAILED / CANCELED) once life-cycle is TERMINATED.
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. Fetch the output / error. Gotcha: get-run-output takes the task run_id (.tasks[0].run_id), NOT the parent run_id from submit. notebook_output.result is the string passed to dbutils.notebook.exit().
databricks jobs get-run-output <TASK_RUN_ID> | jq '{result: .notebook_output.result, error, error_trace}'
Always use dbutils.notebook.exit(<string>) in the notebook — print() is not captured by get-run-output. For JSON results: dbutils.notebook.exit(json.dumps({...})) then parse .notebook_output.result client-side.
Interactive Cluster → reference
Avoid by default — prefer Serverless Job. Only use an interactive cluster when:
- you have an existing classic cluster already running and available, or
- you need live, stateful execution across multiple calls (debugging via an execution context), or
- the user explicitly asks for it.
Interactive clusters are slow to start (3-8 min) and cost money while running. Don't start one implicitly.
CLI Command Map
All compute lifecycle and code-execution actions go through the Databricks CLI. Headline commands:
| Action | Command |
|---|---|
| Upload local file as workspace notebook | databricks workspace import <WORKSPACE_PATH> --file <LOCAL> --format SOURCE --language PYTHON --overwrite |
| Run serverless code (upload + submit + wait) | databricks jobs submit --json @submit.json (see Serverless Job section above; with --no-wait for async) |
| Get run state / wait | databricks jobs get-run <RUN_ID> (poll .state.life_cycle_state) |
| Fetch run output | databricks jobs get-run-output <TASK_RUN_ID> |
| List clusters | databricks clusters list --output json |
| Get cluster details | databricks clusters get <CLUSTER_ID> |
| Start / restart / terminate cluster | databricks clusters start/restart/delete <CLUSTER_ID> |
| Permanently delete cluster | databricks clusters permanent-delete <CLUSTER_ID> |
| Create cluster | databricks clusters create --json '{...}' (see 3-interactive-cluster.md) |
| List node types / Spark versions | databricks clusters list-node-types / databricks clusters spark-versions |
| Execute code on a running cluster | databricks api post /api/1.2/contexts/create + databricks api post /api/1.2/commands/execute (see 3-interactive-cluster.md) |
| SQL warehouses | databricks warehouses create/list/get/start/stop/edit/delete (see SQL Warehouses below) |
SQL Warehouses
All ID-taking commands use positional arg (no --id flag). Use databricks warehouses list to find an ID.
# 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>
Sizes: 2X-Small, X-Small, Small, Medium, Large, X-Large, 2X-Large, 3X-Large, 4X-Large. Types: set "warehouse_type": "PRO" (default) or "CLASSIC" in the JSON body.
Related Skills
- databricks-synthetic-data-gen — Data generation using Spark + Faker
- databricks-jobs — Production job orchestration
- databricks-dbsql — SQL warehouse and AI functions
原文・著作権は Anthropic および各プラグイン作者に帰属します。日本語訳は Claude API による自動翻訳です。