Databricksジョブを作成して実行する
この記事では、ジョブUIを使用してDatabricksジョブを作成および実行する方法について詳しく説明します。
ジョブの構成オプションと既存のジョブの編集方法については、「Databricksジョブの設定を構成する」を参照してください。
ジョブの実行を管理および監視する方法については、「ジョブの実行の表示および管理」を参照してください。
Databricksジョブで最初のワークフローを作成するには、クイックスタートを参照してください。
重要
ワークスペースの同時タスク実行数は 1000 に制限されています。すぐに開始できない実行を要求すると、
429 Too Many Requests
応答が返されます。ワークスペースが 1 時間に作成できるジョブの数は 10000 に制限されています(「実行の送信」を含む)。この制限は、REST API およびノートブックワークフローによって作成されたジョブにも影響します。
ワークスペースには最大 12,000 個の保存済みジョブを含めることができます。
ジョブには最大 100 個のタスクを含めることができます。
CLI、API、またはノートブックを使用してジョブを作成および実行する
Databricks CLI を使用してジョブを作成および実行する方法については、 「Databricks CLI とは」を参照してください。
ジョブAPIを使用してジョブを作成および実行する方法については、REST APIリファレンスの「ジョブ」を参照してください。
Databricksノートブックで直接ジョブを実行しスケジュールする方法については、「スケジュールされたノートブックジョブの作成と管理」を参照してください。
ジョブの作成
以下のいずれかを実行します。
クリック
サイドバーのワークフローをクリックして
。
サイドバーの
[新規]をクリックし、[ジョブ]を選択します。
「タスク」タブは、「タスクの作成」ダイアログとともに、ジョブレベルの設定を含む「ジョブの詳細」サイドパネルとともに表示されます。
新しいジョブをジョブ名に置き換えます。
「タスク名」フィールドにタスクの名前を入力します。
[タイプ]ドロップダウン メニューで、実行するタスクのタイプを選択します。 タスク タイプ オプションを参照してください。
タスクが実行されるクラスターを構成します。 当然、ワークスペースが Unity カタログ対応のワークスペースにあり、ワークフローに対してサーバレス コンピュートでサポートされているタスクを選択している場合は、サーバレス コンピュートが選択されます。 ワークフロー用のサーバレス コンピュートを使用したDatabricksジョブの実行を参照してください。 サーバレス コンピュートが使用できない場合、または別のコンピュート タイプを使用したい場合は、コンピュートドロップダウン メニューで新しいジョブ クラスターまたは既存の汎用クラスターを選択できます。
新しいジョブ クラスター: [クラスター]ドロップダウン メニューで[編集]をクリックし、クラスター構成を完了します。
既存の汎用クラスター: [クラスター] ドロップダウンメニューから既存のクラスターを選択します。 新しいページでクラスターを開くには、
クラスター名と説明の右側にあるアイコン。
タスクを実行するクラスターの選択と設定の詳細については、「ジョブでDatabricksコンピューティングを使用する」を参照してください。
依存ライブラリを追加するには、 「依存ライブラリ」の横にある「+ 追加」をクリックします。 「依存ライブラリの構成」を参照してください。
あなたのタスクに問題を渡すことができます。 フォーマットおよび問題を渡すための要件については、 Databricksジョブ タスクに問題を渡す」を参照してください。
必要に応じて、タスクの開始、成功、または失敗に関する通知を受信するには、「電子メール」の横にある「+ 追加」をクリックします。失敗通知は、最初のタスク失敗時およびその後の再試行時に送信されます。通知をフィルタリングして送信される電子メールの数を減らすには、 「スキップされた実行の通知をミュートする」、「キャンセルされた実行の通知をミュートする」、または「最後の再試行まで通知をミュートする」をオンにします。
オプションでタスクの再試行ポリシーを構成するには、 [再試行]の横にある[+ 追加]をクリックします。 「タスクの再試行ポリシーを構成する」を参照してください。
タスクの予想期間またはタイムアウトをオプションで構成するには、 [期間しきい値]の横にある[+ 追加]をクリックします。 「タスクの予想完了時間またはタイムアウトを構成する」を参照してください。
[作成]をクリックします。
最初のタスクを作成した後、通知、ジョブトリガー、権限などのジョブレベルの設定を構成できます。 「ジョブの編集」を参照してください。
別のタスクを追加するには、 DAG ビューで。 共有クラスタ オプションは、サーバレスコンピュートを選択した場合、または以前のタスクに対して新しいジョブ クラスタを構成した場合に提供されます。 タスクを作成または編集するときに、タスクごとにクラスターを構成することもできます。 クラスターを実行タスクに選択して構成する方法の詳細については、 「ジョブでDatabricksコンピュートを使用する」を参照してください。
オプションで、通知、ジョブ トリガー、権限などのジョブ レベルの設定を構成できます。 「ジョブの編集」を参照してください。 ジョブのタスクと共有されるジョブレベルの課題を構成することもできます。 すべてのジョブタスクについては「追加」を参照してください。
タスクタイプのオプション
Databricksジョブに追加できるタスクの種類と、さまざまなタスクの種類で利用可能なオプションを以下に示します。
ノートブック : [ソース] ドロップダウン メニューで [ワークスペース] を選択し、Databricks ワークスペースGit フォルダーにあるノートブックを使用するか、リモートGit リポジトリにあるノートブックの プロバイダーを 使用します。
ワークスペース:ファイルブラウザを使用してノートブックを探し、ノートブック名をクリックして、「確認」をクリックします。
Git プロバイダー: Git 参照の編集または追加をクリックし、Git リポジトリ情報を入力します。 「リモート Git リポジトリからノートブックを使用する」を参照してください。
注:
ノートブック・セルの合計出力(すべてのノートブック・セルの合計出力)には、20MBのサイズ制限が適用されます。さらに、個々のセル出力には8MBのサイズ制限が適用されます。セル出力の合計サイズが20MBを超える場合、または個々のセルの出力が8MBを超える場合、実行はキャンセルされ、失敗としてマークされます。
限界に近いセルや限界を超えているセルを見つけたい場合は、万能クラスタに対してノートブックを実行し、このノートブック自動保存テクニックを使用してください。
JAR:「メインクラス」を指定します。mainメソッドを含むクラスの完全修飾名(
org.apache.spark.examples.SparkPi
など)を使用します。次に、「依存ライブラリ」の下の「追加」をクリックして、タスクの実行に必要なライブラリを追加します。これらのライブラリのいずれかにメインクラスが含まれている必要があります。JARタスクの詳細については、「DatabricksジョブでのJARの使用」を参照してください。
Spark Submit:「パラメーター」テキストボックスで、メインクラス、ライブラリJARへのパス、およびJSON形式の文字列の配列としてフォーマットされたすべての引数を指定します。次の例では、Apache Sparkの例の
DFSReadWriteTest
を実行するように、spark-submitタスクを設定します。["--class","org.apache.spark.examples.DFSReadWriteTest","dbfs:/FileStore/libraries/spark_examples_2_12_3_1_1.jar","/discover/databricks-datasets/README.md","/FileStore/examples/output/"]
重要
Spark-Submitタスクにはいくつかの制限があります。
Spark-Submitタスクは、新しいクラスターでのみ実行できます。
Spark -submit はクラスターオートスケールをサポートしていません。 オートスケールの詳細については、 「クラスター オートスケール」を参照してください。
Spark-submit はDatabricks ユーティリティ (dbutils) リファレンスをサポートしていません。 Databricks ユーティリティを使用するには、代わりに JAR タスクを使用します。
Unity Catalog 対応のクラスターを使用している場合、クラスターが割り当てられたアクセス モードを使用する場合にのみ、spark-submit がサポートされます。 共有アクセスモードはサポートされていません。
Sparkストリーミング ジョブの最大ライナー実行を 1 より大きく設定しないでください。 ストリーミング ジョブは、cron 式
"* * * * * ?"
(1 分ごと) を使用して実行するように設定する必要があります。 ストリーミング タスクは継続的に実行されるため、常にジョブ内の最後のタスクである必要があります。
Pythonスクリプト : [ソース] ドロップダウン メニューで、 スクリプトの場所を選択します。ローカルPython ワークスペース内のスクリプトの 場合は「DBFS ワークスペース」、DBFS Git上にあるスクリプトの場合は 、Git リポジトリにあるスクリプトの場合は プロバイダー のいずれかを選択します。 。[パス]テキストボックスに、Python スクリプトへのパスを入力します。
ワークスペース:「Pythonファイルの選択」ダイアログで、Pythonスクリプトを参照し、「確認」をクリックします。
DBFS:DBFSまたはクラウドストレージ上のPython スクリプトのURIを入力します。
dbfs:/FileStore/myscript.py
。Git プロバイダー: [編集] をクリックし、Git リポジトリ情報を入力します。 「リモート Git リポジトリから Python コードを使用する」を参照してください。
Delta Live Tablesパイプライン: [パイプライン]ドロップダウン メニューで、既存のDelta Live Tablesパイプラインを選択します。
重要
パイプラインタスクでは、トリガーされたパイプラインのみを使用できます。 継続的なパイプラインはジョブ タスクとしてサポートされていません。 トリガーされたパイプラインと連続的なパイプラインの詳細については、 「連続的なパイプライン実行とトリガーされたパイプライン実行」を参照してください。
Python wheel :パッケージ名テキスト ボックスに、インポートするパッケージを入力します (例:
myWheel-1.0-py2.py3-none-any.whl
)。 「エントリ ポイント」テキスト ボックスに、 Python wheelファイルを起動するときに呼び出す関数を入力します。 [依存ライブラリ]の下にある[追加] をクリックして、タスクの実行に必要なライブラリを追加します。SQL : SQL タスクのドロップダウン メニューで、クエリ、レガシー ダッシュボード、アラート、またはファイルを選択します。
注:
SQLタスクにはDatabricks SQLとサーバレスまたはプロSQLウェアハウスが必要です。
クエリ: SQLクエリドロップダウン メニューで、タスク実行時に実行するクエリを選択します。
レガシー ダッシュボード: SQL ダッシュボードドロップダウン メニューで、タスクの実行時に更新されるダッシュボードを選択します。
アラート: SQLアラートドロップダウン メニューで、評価をトリガーするアラートを選択します。
ファイル : ワークスペース フォルダーにある ファイルを使用するには、SQL Databricks[ソース] ドロップダウン メニューで [ワーク スペース ] を選択し、ファイル ブラウザーを使用して ファイルを見つけ、ファイル名をクリックして、SQL [確認] をクリックします。リモート Git リポジトリにある SQL ファイルを使用するには、 Git プロバイダーを選択し、 git 参照の編集または追加をクリックして、Git リポジトリの詳細を入力します。 「リモート Git リポジトリからの SQL クエリの使用」を参照してください。
SQLウェアハウス]ドロップダウン メニューで、タスクを実行するサーバレスまたはプロSQLウェアハウスを選択します。
dbt : dbt タスクを構成する詳細な例については、「Databricks ジョブで dbt 変換を使用する」を参照してください。
実行ジョブ: [ジョブ]ドロップダウン メニューで、タスクによって実行されるジョブを選択します。 実行するジョブを検索するには、 [ジョブ]メニューでジョブ名の入力を開始します。
重要
Run Job
タスク、または3つ以上のRun Job
タスクをネストするジョブを使用する場合は、循環依存関係のあるジョブを作成しないでください。循環依存関係は、直接的または間接的に相互にトリガーするRun Job
タスクです。たとえば、ジョブAはジョブBをトリガーし、ジョブBはジョブAをトリガーします。Databricksでは、循環依存関係のあるジョブや、3つを超えるRun Job
タスクをネストするジョブはサポートされていないため、将来のリリースではこれらのジョブの実行が許可されなくなる可能性があります。If/else :
If/else condition
タスクの使用方法については、 「If/else 条件タスクを使用してジョブに分岐ロジックを追加する」を参照してください。それぞれ:
For each
タスクの使用方法については、「 パラメーター化された Databricks ジョブ タスクをループで実行する」を参照してください。
Databricksジョブタスクにパラメーターを渡す
ジョブタスクの種類の多くにパラメータを渡すことができます。タスクの種類ごとに、パラメーターのフォーマットと受け渡しに関する要件が異なります。
タスク名など、現在のタスクに関する情報にアクセスしたり、ジョブの開始時刻や現在のジョブ実行の識別子など、ジョブ タスク間で現在の実行に関するコンテキストを渡したりするには、動的値参照を使用します。 使用可能な動的値参照のリストを表示するには、[ 動的値の参照] をクリックします。
タスクが属するジョブにジョブの問題が設定されている場合、タスクを追加するとそれらのジョブの問題が表示されます。 ジョブとタスクの問題がキーを共有する場合、ジョブの問題が優先されます。 ジョブ保留と同じキーでタスク保留を追加しようとすると、UI に警告が表示されます。 JAR
やSpark Submit
タスクなど、Key-Value 問題が構成されていないタスクにジョブ問題を渡すには、引数を{{job.parameters.[name]}}
としてフォーマットし、 [name]
を問題を識別するkey
に置き換えます。
ノートブック: [追加] をクリックし、タスクに渡す各キーと値を指定します。 手動でタスクを実行するときは、別の保留オプションを使用してジョブを実行することにより、問題をオーバーライドしたり、追加したりすることができます。 問題のキーで指定されたノートブック ウィジェットの値を設定します。
JAR : 文字列のJSON形式の配列を使用して指定します。 これらの文字列は、メイン クラスの main メソッドに引数として渡されます。 JARジョブの構成」を参照してください。
Spark Submit: パラメーターは、JSON形式の文字列配列で指定します。Apache Sparkのspark-submit規約に従い、JARパス以降のパラメータはmainクラスのmainメソッドに渡されます。
Python wheel : [問題]ドロップダウン メニューで、 [位置引数]を選択して文字列のJSON形式の配列として問題を入力するか、 [キーワード引数] > [追加]を選択して各問題のキーと値を入力します。 位置引数とキーワード引数の両方が、コマンドライン引数として Python wheel タスクに渡されます。 ファイルにパッケージ化された スクリプトで引数を読み取る例については、PythonPython wheel 「 ジョブで ファイルを使用する」 を参照してください。Python wheelDatabricks
ジョブ: ジョブに渡す各ジョブ実行のキーと値を入力します。
Pythonスクリプト: JSON形式の文字列の配列を使用して、問題を指定します。 これらの文字列は引数として渡され、位置引数として読み取ったり、Python のargparseモジュールを使用して解析したりできます。 Python スクリプトで位置引数を読み取る例については、 「ステップ 2: GitHub データを取得するスクリプトを作成する」を参照してください。
SQL : タスクがパラメーター化されたクエリまたはパラメーター化されたダッシュボードを実行する場合は、指定されたテキスト ボックスにパラメーターの値を入力します。
タスクパスをコピーする
ノートブックタスクなどの特定のタスクタイプでは、タスクソースコードへのパスをコピーできます。
「タスク」タブをクリックします。
コピーするパスを含むタスクを選択します。
クリック
タスク パスの横にある をクリックすると、パスがクリップボードにコピーされます。
既存のジョブからジョブを作成する
既存のジョブを複製することで、新しいジョブをすばやく作成できます。 ジョブを複製すると、ジョブ ID を除いて、ジョブの同一のコピーが作成されます。 ジョブのページで、ジョブ名の横にある[詳細...]をクリックし、ドロップダウン メニューから[複製]を選択します。
既存のタスクからタスクを作成する
既存のタスクのクローンを作成することで、新しいタスクをすばやく作成できます。
ジョブのページで、「タスク」タブをクリックします。
クローンするタスクを選択してください。
クリック
タスクのクローン作成を選択します。
ジョブを実行する
サイドバーの
[ワークフロー]をクリックします。
ジョブを選択し、「実行」タブをクリックします。ジョブをすぐに実行することも、ジョブを後で実行するようにスケジュールすることもできます。
複数のタスクを含むジョブ内の 1 つ以上のタスクが失敗した場合は、失敗したタスクのサブセットを再実行できます。 「失敗したタスクやスキップされたタスクを再実行する」を参照してください。
ジョブをすぐに実行する
ジョブをすぐに実行するには、 。
ヒント
「今すぐ実行」 をクリックすると、ノートブックタスクを使用してジョブのテストを実行できます。ノートブックに変更を加える必要がある場合は、ノートブックの編集後にもう一度「今すぐ実行」をクリックすると、新しいバージョンのノートブックが自動的に実行されます。
別のパラメータで今すぐジョブを実行
「別のパラメータで今すぐ実行」 を使用すると、別のパラメータまたは既存のパラメータの別の値を使用してジョブを再実行できます。
注:
ジョブ課題の導入前に実行されていたジョブが同じキーでタスク課題をオーバーライドした場合、ジョブ課題をオーバーライドすることはできません。
クリック
[今すぐ実行]の横にある[異なる問題で実行]を選択するか、 アクティブ実行テーブルで[異なる問題で実行]をクリックします。 タスクの種類に応じて、新しい「問題」を入力します。 「Databricks ジョブ タスクにパラメーターを渡す」を参照してください。
実行をクリックします。
サービスプリンシパルとしてジョブを実行
注:
ジョブ実行SQLクエリがSQLタスクを使用する場合、ジョブがサービスプリンシパルとして実行される場合でも、クエリの実行に使用される ID は各クエリの共有設定によって決まります。 クエリがRun as owner
に構成されている場合、クエリは常にサービスプリンシパルの ID ではなく、所有者の ID を使用して実行されます。 クエリがRun as viewer
に構成されている場合、クエリはサービスプリンシパルの ID を使用して実行されます。 クエリ共有設定の詳細については、「 クエリのアクセス許可を構成する」を参照してください。
安心により、ジョブ所有者のアイデンティティとしてジョブが実行されます。 これは、ジョブがジョブ所有者の権限を引き継ぐことを意味します。 ジョブは、ジョブ所有者がアクセス権限を持つデータと Databricks オブジェクトにのみアクセスできます。 ジョブが実行されている ID をサービスプリンシパルに変更できます。 次に、ジョブは所有者の代わりにそのサービスプリンシパルの権限を引き継ぎます。
「実行ユーザー」設定を変更するには、ジョブに対する CAN MANAGE または IS OWNER 権限のいずれかが必要です。 実行は自分自身に設定することも、サービスプリンシパル Userロールを持つワークスペース内の任意のサービスプリンシパルに設定することもできます。 詳細については、 「サービスプリンシパルを管理するための役割」を参照してください。
注:
ワークスペースのRestrictWorkspaceAdmins
設定がALLOW ALL
に設定されている場合、ワークスペース管理者は、ワークスペース内の任意のユーザーに [実行ユーザーとして] 設定を変更することもできます。 ワークスペース管理者が実行を自分自身、またはサービスプリンシパルユーザーロールを持つサービスプリンシパルにのみ変更するように制限するには、 「ワークスペース管理者を制限する」を参照してください。
「別のユーザーとして実行」フィールドを変更するには、次の手順を実行します。
サイドバーで、
[ワークフロー]をクリックします。
「名前」列で、ジョブ名をクリックします。
「ジョブの詳細」サイドパネルで、「実行」フィールドの横にある鉛筆アイコンをクリックします。
サービスプリンシパルを検索して選択します。
[保存]をクリックします。
ワークスペース サービスプリンシパル を使用して、 ユーザー 役割を持つサービスプリンシパルを一覧表示することもできます。API詳細については、 「使用できるサービスプリンシパルのリスト」を参照してください。
スケジュールに従ってジョブを実行する
スケジュールを使用すると、指定した時間と期間に Databricks ジョブを自動的に実行できます。 「ジョブ スケジュールの追加」を参照してください。
連続ジョブの実行
ジョブが常にアクティブに実行されていることを確認できます。 「継続的なジョブの実行」を参照してください。
新しいファイルが到着したらジョブを実行する
新しいファイルがUnity Catalogの外部ロケーションまたはボリュームに到着したときにジョブ実行をトリガーするには、ファイル到着トリガーを使用します。
Databricks アセットバンドルで作成されたジョブを表示および実行する
Databricks ジョブ UI を使用して、Databricks アセット バンドルによってデプロイされたジョブを表示および実行できます。 デフォルトでは、これらのジョブはジョブ UI で読み取り専用になります。 バンドルによってデプロイされたジョブを編集するには、バンドル構成ファイルを変更し、ジョブを再デプロイします。 バンドル構成にのみ変更を適用すると、バンドル ソース ファイルは常に現在のジョブ構成をキャプチャするようになります。
ただし、ジョブをすぐに変更する必要がある場合は、ジョブをバンドル構成から切断して、UI でジョブ設定を編集できるようにすることができます。 ジョブを切断するには、 「ソースから切断」をクリックします。 [ソースから切断] ダイアログで、 [切断] をクリックして確認します。
UI でジョブに加えた変更は、バンドル構成には適用されません。 UI で行った変更をバンドルに適用するには、バンドル設定を手動で更新する必要があります。 ジョブをバンドル構成に再接続するには、バンドルを使用してジョブを再デプロイします。
同時実行制限のためにジョブを実行できない場合はどうなりますか?
注:
UI でジョブが作成されると、キューイングはデフォルトで有効になります。
同時実行制限によりジョブの実行がスキップされないようにするには、ジョブのキューイングを有効にします。 キューイングが有効になっている場合、ジョブ実行にリソースが利用できない場合、実行は最大 48 時間キューに入れられます。 容量が利用可能になると、ジョブ実行はキューから取り出され、実行されます。 キューに入れられた実行は、ジョブの実行リストと最近のジョブ実行リストに表示されます。
次のいずれかの制限に達すると、実行はキューに入れられます。
ワークスペース内で最大音量のアクティブ実行。
ワークスペース内で実行できる最大のライナー
Run Job
タスク。ジョブの最大ライナー実行。
キューイングは、そのジョブに対してのみキューが実行されるジョブ レベルのプロパティです。
キューイングを有効または無効にするには、 [詳細設定]をクリックし、 [ジョブの詳細]サイド パネルの[キュー]切り替えボタンをクリックします。