ジョブの作成と管理を自動化

この記事では、開発者ツールを使用してジョブの作成と管理を自動化する方法について説明します。 Databricks CLI、Databricks SDK、REST API について紹介します。

注:

この記事では、Databricks CLI、Databricks Python SDK、REST API を使用してジョブを作成および管理する例を、これらのツールの簡単な紹介として提供します。 CI/CD の一部としてジョブをプログラムで管理するには、 Databricks アセット バンドル (DAB) または Databricks Terraform プロバイダーを使用します。

ツールの比較

次の表では、ジョブをプログラムで作成および管理するための Databricks CLI、Databricks SDK、REST API を比較しています。 使用可能なすべての開発者ツールについては、「 開発者ツール」を参照してください。

ツール

説明

Databricks CLI

Databricks の機能には、REST API をラップする Databricks コマンドライン インターフェイス (CLI) を使用してアクセスします。 CLI は、実験、シェルスクリプト、REST API の直接呼び出しなどの 1 回限りのタスクに使用します

Databricks SDK

Python、Java、Go、R で利用可能な Databricks SDK を使用して、アプリケーションを開発し、カスタム Databricks ワークフローを作成します。curl または Postman を使用して REST API 呼び出しを直接送信する代わりに、SDK を使用して Databricks と対話できます。

Databricks REST API

上記のオプションのいずれも特定のユースケースで機能しない場合は、Databricks REST API を直接使用できます。 REST API は、優先プログラミング言語の SDK が現在利用できないプロセスの自動化などのユースケースで直接使用します。

Databricks CLI の使用を開始する

Databricks CLI の認証をインストールして構成するには、「 Databricks CLI のインストールまたは更新 」および 「Databricks CLI の認証」を参照してください。

Databricks CLIには、ジョブ用のコマンドを含むDatabricks機能用のコマンド グループがあり、関連するコマンドのセットが含まれています。これには、サブコマンドを含めることもできます。jobs コマンド グループを使用すると、createdeletegetなどのアクションを使用して、ジョブとジョブ実行を管理できます。CLI は Databricks REST API をラップするため、ほとんどの CLI コマンドは REST API 要求にマップされます。 たとえば、 databricks jobs getGET/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という名前の環境変数をエクスポートするクラスタリングを一時的に作成します。 ジョブの実行後、クラスタリングは終了します。

  1. 次の JSON をコピーしてファイルに貼り付けます。 既存のジョブの JSON 形式にアクセスするには、ジョブ ページ UI から [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"
        }
        }
    ]
    }
    
  2. 次のコマンドを実行します。 <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 DatabricksSDKの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 では、対応する Databricks SDK がないプログラミング言語を使用している場合を除き、 Databricks CLIDatabricks SDK を使用することをお勧めします。

次の例では、Databricks REST API に対して要求を行い、1 つのジョブの詳細を取得します。 DATABRICKS_HOST 環境変数と DATABRICKS_TOKEN 環境変数が、「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から直接ジョブを削除します。

次のステップ