Databricks ジョブのタスク間で情報を共有する

タスク値を使用して、 Databricksジョブ内のタスク間で任意の変数を渡すことができます。 タスク値を渡したい場合は、Databricks Utilities のtaskValues サブユーティリティを使用します。 taskValues サブユーティリティは、タスクが後続のタスクで参照できる値を出力できるようにするシンプルな API を提供し、より表現力豊かなワークフローを簡単に作成できるようにします。 たとえば、ジョブ実行内の異なるタスク間で、機械学習モデルの評価に関する情報などの識別子やメトリクスを通信できます。 各タスクは複数のタスク値を設定および取得できます。 タスクの値は、Python ノートブックで設定および取得できます。

注:

ノートブックで動的値参照を使用して、上流のタスクに設定されたタスク値を参照できるようになりました。 たとえば、タスクGet_user_dataによって設定されたキーnameを持つ値を参照するには、 {{tasks.Get_user_data.values.name}}を使用します。 複数のタスク タイプで使用できるため、Databricks では、タスク値をプログラムで取得するには、 dbutils.jobs.taskValues.getではなく動的値参照を使用することをお勧めします。

タスク値の使用

taskValues サブユーティリティには、変数を設定するためのdbutils.jobs.taskValues.set()と値を取得するためのdbutils.jobs.taskValues.get()の 2 つのコマンドが用意されています。 Get_user_dataAnalyze_user_dataという 2 つのノートブック タスクがあり、ユーザーの名前と年齢を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表現のサイズは48 KiBを超えてはなりません。

次の例では、 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 タスク値のキーの名前です。 コマンドがこのタスク値のキーを見つけられない場合は、 ValueErrorが発生します ( defaultが指定されていない場合)。

  • default は、 key が見つからない場合に返されるオプションの値です。defaultNone にはできません。

  • debugValue は、ジョブの外部で実行されているノートブック内からタスク値を取得しようとした場合に返されるオプションの値です。 これは、デバッグ中にノートブックを手動で実行し、デフォルトで TypeError を上げる代わりに何らかの値を返す場合に便利です。 debugValue Noneすることはできません.

タスク間でコンテキストを共有するより複雑な例として、さまざまな個人属性を考慮して個人の収入を予測するためのいくつかの機械学習モデルと、前の 3 つの出力に基づいて使用する最適なモデルを決定するタスクを含むアプリケーションがあるとします。タスク。 モデルは、 Logistic_RegressionDecision_Tree 、およびRandom_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")

タスク値の表示

タスク実行後のタスクの値を確認するには、タスクの タスク履歴に移動します。 タスク値の結果は出力パネルに表示されます。