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

タスク値 を使用して、Databricks ジョブ内のタスク間で任意のパラメーターを渡すことができます。タスク値を渡すには、Databricks ユーティリティの 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 が見つからない場合に返されるオプションの値です。 default Noneすることはできません.

  • 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")

タスク値の表示

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