0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

最近のDatabricksジョブの機能追加(条件分岐、別のジョブの呼び出しなど)

Posted at

こちらを眺めていたら、結構機能追加されていることに気づきました。

Databricks ジョブ UIで完了したジョブ実行の概要を視覚的に確認する

サイドメニューのJob Runsあるいは、ワークフロー > ジョブ実行にアクセスします。
Untitled.png

過去に実行されたジョブの概要とエラーなどを確認することができます。
Screenshot 2023-08-07 at 13.01.21.png

実行速度の遅いジョブやスタックしたジョブのアラートを作成する

ジョブやジョブを構成するタスクの処理が想定以上に時間を要している場合に、警告やタイムアウトを行う機能です。

最初に以下のようなノートブックを作成しておきます。

timeout_notebook
import time
time.sleep(30)

ジョブを作成して、ジョブのタイムアウト時間を設定します。なお、ジョブのタイムアウト時間が設定されていないと、タイムアウトの通知を受け取ることができません。タスクのタイムアウトの通知も同様です。
Screenshot 2023-08-07 at 13.41.51.png

通知先を設定し、通常より長く時間... (継続時間が通常より長くかかる場合)にチェックを入れます。ここのラベル、あとで修正しておきます。
Screenshot 2023-08-07 at 13.39.29.png

これで、ジョブの処理時間に対する閾値を設定することができます。
Screenshot 2023-08-07 at 13.48.58.png
Screenshot 2023-08-07 at 13.50.04.png

別のジョブをDatabricksジョブのタスクとして実行する

これは、あるジョブから別のジョブを呼び出せるということです。

以下のようにそれぞれがタスクから構成されるジョブを2つ作成します。

  • job1
    • task1-1
  • job2
    • task2-1
    • task2-2

Screenshot 2023-08-07 at 13.55.27.png

job2を作成した後に、job1のtask1-1の後続処理としてjob2を選択します。
Screenshot 2023-08-07 at 13.55.45.png
Screenshot 2023-08-07 at 13.56.03.png

これで、あるジョブから別のジョブを呼び出せるように設定できました。
Screenshot 2023-08-07 at 13.56.24.png

実行できました!これは、既存ジョブの拡張が捗りますね。
Screenshot 2023-08-07 at 14.07.01.png

Databricksジョブで条件付きでタスクを実行する

個人的には心待ちにしていた機能です。

以下のように3つのノートブックを作成します。

task-a
print("no error")
task-success
print("success")
task-failure
print("failed")

これらのノートブックを用いてジョブを構成します。タスクtask-aの後段にタスクsuccessを追加し、次の場合に実行すべて成功しましたを選択します。これで、タスクsuccessは前段のすべてのタスク(今回はtask-aのみですが)が成功した場合に実行されるようになります。
add_task.png

さらにタスクtask-aの後段にタスクfailureを追加します。今度は次の場合に実行少なくとも1回失敗しましたを選択します。
add_task2.png

このように分岐のあるジョブを構成することができました。
Screenshot 2023-08-07 at 14.36.45.png

まずは、このままジョブを実行します。タスクtask-aは成功するので、タスクsuccessが実行されます。
Screenshot 2023-08-07 at 14.41.44.png
Screenshot 2023-08-07 at 14.42.00.png

次にtask-aを変更して、エラーを意図的に発生させます。

task-a
print("error happens")
aa

今度はtask-aが処理に失敗するので、failureが実行されます。
Screenshot 2023-08-07 at 14.53.51.png
Screenshot 2023-08-07 at 14.54.51.png

これで、さらに柔軟なロジックを構成できるようになります。是非お試しください!

Databricksクイックスタートガイド

Databricksクイックスタートガイド

Databricks無料トライアル

Databricks無料トライアル

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?