ジョブの作成と管理を自動化する
この記事では、開発者ツールを使用してジョブの作成と管理を自動化する方法について説明します。 Databricks CLI、Databricks SDK、および REST API について説明します。
注
この記事では、Databricks CLI、Databricks Python SDK、および REST API を使用して、これらのツールの簡単な概要としてジョブを作成および管理する例を示します。 CI/CD の一部としてジョブをプログラムで管理するには、Databricks Asset Bundles (DAB) または Databricks Terraform プロバイダーを使用します。
ツールの比較
次の表では、プログラムによってジョブを作成および管理するための Databricks CLI、Databricks SDK、および REST API を比較します。 利用可能なすべての開発者ツールの詳細については、「ローカル開発ツール を参照してください。
ツール | 説明 |
---|---|
Databricks CLI | REST API をラップする Databricks コマンド ライン インターフェイス (CLI) を使用して、Databricks の機能にアクセスします。 実験、シェル スクリプト、REST API の直接呼び出しなどの 1 回限りのタスクに CLI を使用する |
Databricks SDK | Python、Java、Go、または R で使用できる Databricks SDK を使用して、アプリケーションを開発し、カスタム Databricks ワークフローを作成します。curl または Postman を使用して REST API 呼び出しを直接送信する代わりに、SDK を使用して Databricks と対話できます。 |
Databricks REST API | 上記のどのオプションも特定のユース ケースで機能しない場合は、Databricks REST API を直接使用できます。 任意のプログラミング言語の SDK が現在使用できないプロセスの自動化などのユース ケースには、REST API を直接使用します。 |
Databricks CLI の使い方を始める
Databricks CLI の認証をインストールして構成するには、「Databricks CLI のインストールまたは更新」と「Databricks CLI の認証」を参照してください。
Databricks CLI には、ジョブ用のコマンド グループを含む Databricks 機能のコマンド グループがあります。これには、サブコマンドを含め、関連する一連のコマンドが含まれています。 jobs
コマンド グループを使用すると、create
、delete
、get
などのアクションを使用してジョブとジョブの実行を管理できます。 CLI は Databricks REST API をラップするため、ほとんどの CLI コマンドは REST API 要求にマップされます。 たとえば、databricks jobs get
は GET/api/2.2/jobs/get
にマップされます。
ジョブ・コマンド・グループ、個々のコマンド、またはサブコマンドの詳細な使用法と構文情報を出力するには、h
フラグを使用します。
databricks jobs -h
databricks jobs <command-name> -h
databricks jobs <command-name> <subcommand-name> -h
例: CLI を使用して Databricks ジョブを取得する
ワークスペース内の個々のジョブに関する情報を出力するには、次のコマンドを実行します。
$ databricks jobs get <job-id>
databricks jobs get 478701692316314
このコマンドは JSON を返します。
{
"created_time":1730983530082,
"creator_user_name":"someone@example.com",
"job_id":478701692316314,
"run_as_user_name":"someone@example.com",
"settings": {
"email_notifications": {
"no_alert_for_skipped_runs":false
},
"format":"MULTI_TASK",
"max_concurrent_runs":1,
"name":"job_name",
"tasks": [
{
"email_notifications": {},
"notebook_task": {
"notebook_path":"/Workspace/Users/someone@example.com/directory",
"source":"WORKSPACE"
},
"run_if":"ALL_SUCCESS",
"task_key":"success",
"timeout_seconds":0,
"webhook_notifications": {}
},
{
"depends_on": [
{
"task_key":"success"
}
],
"disable_auto_optimization":true,
"email_notifications": {},
"max_retries":3,
"min_retry_interval_millis":300000,
"notebook_task": {
"notebook_path":"/Workspace/Users/someone@example.com/directory",
"source":"WORKSPACE"
},
"retry_on_timeout":false,
"run_if":"ALL_SUCCESS",
"task_key":"fail",
"timeout_seconds":0,
"webhook_notifications": {}
}
],
"timeout_seconds":0,
"webhook_notifications": {}
}
}
例: CLI を使用して Databricks ジョブを作成する
次の例では、Databricks CLI を使用して Databricks ジョブを作成します。 このジョブには、指定したノートブックを実行する 1 つのジョブ タスクが含まれています。 このノートブックは、wheel
PyPI パッケージの特定のバージョンに依存しています。 このタスクを実行するために、ジョブは、PYSPARK_PYTHON
という名前の環境変数をエクスポートするクラスターを一時的に作成します。 ジョブの実行後、クラスターは終了します。
次の JSON をコピーしてファイルに貼り付けます。 ジョブ ページ UI から [JSON の表示] オプション 選択すると、既存のジョブの JSON 形式にアクセスできます。
{ "name": "My hello notebook job", "tasks": [ { "task_key": "my_hello_notebook_task", "notebook_task": { "notebook_path": "/Workspace/Users/someone@example.com/hello", "source": "WORKSPACE" } } ] }
次のコマンドを実行し、
<file-path>
を先ほど作成したファイルのパスと名前に置き換えます。databricks jobs create --json @<file-path>
Databricks SDK を始める
Databricks には、Python、Java、Go などの一般的なプログラミング言語を使用して操作を自動化できる SDK が用意されています。 このセクションでは、Python SDK を使用して Databricks ジョブを作成および管理する方法について説明します。
Databricks SDK は、Databricks ノートブックまたはローカル開発マシンから使用できます。 ローカル開発マシンを使用している場合、最初に「Databricks SDK for Python を使ってみる」を完了してください。
注
Databricks ノートブックから開発していて、Databricks Runtime 12.2 LTS 以下を使用するクラスターを使用している場合は、まず Databricks SDK for Python をインストールする必要があります。 Databricks SDK for Python のインストールまたはアップグレードを参照してください。
例: Python SDK を使用して Databricks ジョブを作成する
次のノートブック コード例では、既存のノートブックを実行する Databricks ジョブを作成します。 プロンプトを使用して、既存のノートブックのパスと関連するジョブ設定を取得します。
まず、正しいバージョンの SDK がインストールされていることを確認します。
%pip install --upgrade databricks-sdk==0.40.0
%restart_python
次に、ノートブック タスクを含むジョブを作成するには、次のコマンドを実行してプロンプトに応答します。
from databricks.sdk.service.jobs import JobSettings as Job
from databricks.sdk import WorkspaceClient
job_name = input("Provide a short name for the job, for example, my-job: ")
notebook_path = input("Provide the workspace path of the notebook to run, for example, /Users/someone@example.com/my-notebook: ")
task_key = input("Provide a unique key to apply to the job's tasks, for example, my-key: ")
test_sdk = Job.from_dict(
{
"name": job_name ,
"tasks": [
{
"task_key": task_key,
"notebook_task": {
"notebook_path": notebook_path,
"source": "WORKSPACE",
},
},
],
}
)
w = WorkspaceClient()
j = w.jobs.create(**test_sdk.as_shallow_dict())
print(f"View the job at {w.config.host}/#job/{j.job_id}\n")
Databricks REST API を使用開始する
注
対応する Databricks SDK を持たないプログラミング言語を使用している場合を除き、Databricks では、Databricks CLI と Databricks SDKを使用することをお勧めします。
次の例では、Databricks REST API に対して、1 つのジョブの詳細を取得するように要求します。 DATABRICKS_HOST
と DATABRICKS_TOKEN
環境変数は、「Azure Databricks の個人用アクセス トークン認証を実行する」で説明されているように設定されていることを前提としています。
$ curl --request GET "https://${DATABRICKS_HOST}/api/2.2/jobs/get" \
--header "Authorization: Bearer ${DATABRICKS_TOKEN}" \
--data '{ "job": "11223344" }'
Databricks REST API の使用については、Databricks REST API リファレンス ドキュメント を参照してください。
クリーンアップ
作成したジョブをすべて削除するには、Databricks CLI から databricks jobs delete <job-id>
を実行するか、Databricks ワークスペース UI から直接ジョブを削除します。
次のステップ
- Databricks CLI の詳細については、「Databricks CLI とは」を参照してください。Databricks CLI コマンドの と 、他のコマンド グループについて学習できます。
- Databricks SDK の詳細については、「Azure Databricksで SDK を使用する」を参照してください。
- Databricks を使用した CI/CD の詳細については、「Databricks アセット バンドル」、「Databricks Terraform プロバイダー」、Databricks 用 Terraform CDKTF に関するページを参照してください。
- すべての開発者ツールの包括的な概要については、「ローカル開発ツール を参照してください。