2
1

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

Share information between tasks in a Databricks job | Databricks on AWS [2023/5/15時点]の翻訳です。

本書は抄訳であり内容の正確性を保証するものではありません。正確な内容に関しては原文を参照ください。

Databricksジョブのタスク間で任意のパラメーターを引き渡すためにタスクバリューを活用することができます。DatabricksユーティリティのtaskValuesサブユーティリティを用いることで、タスクバリューを引き渡すことができます。taskValuesサブユーティリティによって、タスクは後段のタスクで参照可能な値を出力することができるシンプルなAPIを提供し、より表現豊かなワークフローを作成することが容易となります。例えば、ジョブの実行の際に、異なるタスク間で機械学習モデルの評価に関する情報のような、メトリクスやIDをやり取りすることができます。それぞれのタスクでは複数のタスクバリューを設定、取得することができます。タスクバリューは、Pythonノートブックで設定、取得が可能です。

タスクバリューの活用

taskValuesサブユーティリティは、2つのコマンドを提供します: 変数を設定するためのdbutils.jobs.taskValues.set()と編集を取得するためのdbutils.jobs.taskValues.get()です。2つのノートブックタスク: Get_user_dataAnalyze_user_dataがあるものとし、Get_user_dataタスクからユーザー名と年齢をAnalyze_user_dataタスクに引き渡したいものとします。以下のサンプルでは、Get_user_dataタスクでユーザー名と年齢を設定しています。

dbutils.jobs.taskValues.set(key = 'name', value = 'Some User')
dbutils.jobs.taskValues.set(key = "age", value = 30)
  • keyは、タスクバリューのキー名です。この名前はタスクでユニークでなくてはなりません。
  • valueは、このタスクバリューキーの値です。このコマンドは内部で値をJSONフォーマットで表現できる必要があります。値のJSON表現のサイズは48KiBを超えることができません。

以下の例では、Analyze_user_dataタスクで値を取得しています。

dbutils.jobs.taskValues.get(taskKey = "Get_user_data", key = "age", default = 42, debugValue = 0)
dbutils.jobs.taskValues.get(taskKey = "Get_user_data", key = "name", default = "Jane Doe")
  • taskKeyは値を設定したジョブタスクの名前です。コマンドがこのタスクを発見できなかった場合、ValueErrorが発生します。
  • keyはタスクバリューのキー名です。コマンドがこのタスクバリューのキーを見つけられなかった場合、(defaultが設定されていない限り)ValueErrorが発生します。
  • defaultkeyが見つからなった場合に返却されるオプションの値です。defaultNoneにすることはできません。
  • debugValueは、ジョブの外で稼働しているノートブック内からタスクバリューを取得しようとした際に返却されるオプションの値です。これは、ノートブックを手動で実行して、デフォルトのTypeErrorを発生させるのではなく、何かしらの値を取得したいデバッグのケースで有用です。debugValueNoneにすることはできません。

タスク間でのコンテキストを共有するさらに複雑な例として、さまざまな個人の属性に対して、個人の収入を予測する複数の機械学習を含むアプリケーションと、3つのタスクのアウトプットに基づいてベストなモデルを特定するタスクがあるものとします。Logistic_RegressionDecision_TreeRandom_Forestという3つのタスクでモデルが実行され、Best_Modelタスクがこれら3つのタスクのアウトプットに基づいてベストなモデルを特定します。

ベストなパフォーマンスを示すアルゴリズムを特定するために、それぞれのモデルの精度(分類器がどれだけ良好に収入を予測したのか)がタスクバリューとして引き渡されます。例えば、Logistic_Regressionタスクに関連づけられたロジスティック回帰ノートブックには以下のコマンドが含まれます。

dbutils.jobs.taskValues.set(key = "model_performance", value = result)

それぞれのモデルタスクは、model_performanceキーに値を設定します。Best_Modelタスクは、それぞれのタスクの値を読み込み、最適なモデルを特定するためにそれらの値を使用します。以下のサンプルでは、Logistic_Regressionタスクによって設定された値を読み込みます。

logistic_regression = dbutils.jobs.taskValues.get(taskKey = "Logistic_Regression", key = "model_performance")

タスクバリューの参照

タスク実行後にタスクバリューを参照するには、タスクのタスク実行履歴に移動します。Outputパネルにタスクバリューの結果が表示されます。

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

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

Databricks無料トライアル

Databricks無料トライアル

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?