2
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

こちらで説明されているワークフローのタスクバリューを実際に試してみました。

タスクバリューとは

タスクバリュー(Task value)とはジョブを構成するタスクで任意の値を設定、参照できる機能です。これまでは、ノートブック間で値をやり取りするにはノートブックワークフローを構成し、ウィジェットユーティリティ(dbutils.widgets)を使ってノートブック間で値をやり取りしていましたが、こちらはネイティブにジョブで利用できる機能となります。値のやり取りにはジョブユーティリティ(dbutils.jobs)を使用します。

ノートブックの準備

タスクバリューを設定するノートブックと、タスクバリューを取得するノートブックを作成します。dbutils.jobs.taskValues.setでタスクバリューを設定します。keyがタスクバリューのキー、valueが設定値となります。ここでは固定値を指定していますが、通常は何かしらの処理結果になります。

notebook A
dbutils.jobs.taskValues.set(key   = "my-key", \
                            value = 5)

dbutils.jobs.taskValues.getでタスクバリューを取得します。taskKeyがタスクバリューを取得するタスクの名称です。このタスク名は次のステップでジョブを作成する際に指定します。keyがタスクバリューのキーですが、defaultdebugValueについては説明が必要です。

notebook B
task_value = dbutils.jobs.taskValues.get(taskKey    = "my-task", \
                            key        = "my-key", \
                            default    = 7, \
                            debugValue = 42)

print(task_value)

defaultは名前の通りデフォルト値となります。タスクバリューの取得には上述のtaskKeykeyで検索を行います。defaultは、この組み合わせのタスクバリューが存在しない場合に設定される値となります。使い方としては、前段の処理で何かしら問題があった場合にはタスクバリューを設定せず、後段ではデフォルト値を用いるというものが考えられます。

debugValueも名前の通り、デバッグ用の値となります。タスクバリューはジョブ実行の中で使用される機能です。一方、デバッグのためにジョブに設定されているノートブックの動作確認を行いたいというケースもあると思います。この場合、ジョブとして実行するのではなく、クラスターにノートブックを実行して動作を確認することになります。そうすると、タスクバリューの値を取得できないことになりますが、その際にdebugValueを設定しておくことで、インタラクティブにノートブックを実行する場合でもその値を用いて後段の処理を実行することができるようになります。

上記defaultの挙動を確認するためのノートブックも作成しておきます。notebook Bとの違いはkeyがmy-key2となっているところだけです。これは前段のタスクでは設定されないキーとなります。

notebook C
task_value = dbutils.jobs.taskValues.get(taskKey    = "my-task", \
                            key        = "my-key2", \
                            default    = 7, \
                            debugValue = 42)

print(task_value)

ジョブの作成

上のノートブックを用いてマルチタスクのジョブを構成します。notebook Aからnotebook Bとnotebook Cそれぞれに分岐する形にしています。

Screen Shot 2022-08-08 at 8.18.33.png

ジョブの実行

ジョブの実行を行うとnotebook Aでタスクバリューが設定され、notebook Bでそのタスクバリューが参照されます。notebook Cは存在しないタスクバリューを参照します。

ジョブの実行にアクセスすると、実行結果を確認することができます。
Screen Shot 2022-08-08 at 8.20.00.png

ここで重要なのはnotebook Aが設定されているmy-taskです。ノートブック名の右に< > 1という表示があります。これがタスクバリューが設定されていることを意味しています。
Screen Shot 2022-08-08 at 8.21.30.png

タスクmy-taskをクリックすると、右のペインに詳細が表示されます。タスクバリューmy-key5に設定されていることを確認できます。
Screen Shot 2022-08-08 at 8.22.20.png

注意
画面上タスク値という表記になっていますが、タスクバリューに修正します。

そして、設定したタスクバリューを参照しているnotebook Bのタスクをクリックすると、5を取得できていることがわかります。
Screen Shot 2022-08-08 at 8.23.49.png

存在しないタスクバリューを参照しているnotebook Cのタスクをクリックすると、デフォルト値の7が表示されていることがわかります。
Screen Shot 2022-08-08 at 8.24.56.png

最後に、ジョブではなくインタラクティブにタスクバリューを取得してみます。
Screen Shot 2022-08-08 at 8.25.46.png

debugValue42が表示されます。

このように、これまで以上に表現豊かなジョブを記述できるようになるタスクバリュー、是非お試しください!

Databricks 無料トライアル

Databricks 無料トライアル

2
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
2
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?