次の方法で共有


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

この記事では、開発者ツールを使用してジョブの作成と管理を自動化する方法について説明します。 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 コマンド グループを使用すると、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 をコピーしてファイルに貼り付けます。 ジョブ ページ 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"
        }
        }
    ]
    }
    
  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 以下を使用するクラスターを使用している場合は、まず 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 CLIDatabricks SDKを使用することをお勧めします。

次の例では、Databricks REST API に対して、1 つのジョブの詳細を取得するように要求します。 DATABRICKS_HOSTDATABRICKS_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 から直接ジョブを削除します。

次のステップ